From b054f98d98768911613fe32aaf460868511aa6ae Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 31 Aug 2020 14:19:43 +0200 Subject: [PATCH 001/155] add Message class in base.proto The reason is that all the protocols currently use the dialogue system and need to add some fields like message_id, target etc. in their message definition. This change will be useful to refactor existing protocols; we define those fields in only one place and make them available for all the '.proto' protocol files. --- aea/mail/base.proto | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/aea/mail/base.proto b/aea/mail/base.proto index 9f02bca898..4d8dfb6c51 100644 --- a/aea/mail/base.proto +++ b/aea/mail/base.proto @@ -2,10 +2,23 @@ syntax = "proto3"; package fetch.aea; +import "google/protobuf/any.proto"; + +message Message { + int32 message_id = 1; + string dialogue_starter_reference = 2; + string dialogue_responder_reference = 3; + int32 target = 4; + google.protobuf.Any content = 5; +} + message Envelope{ string to = 1; string sender = 2; string protocol_id = 3; - bytes message = 4; - string uri = 5; + oneof message { + bytes message_bytes = 4; + Message message_ = 5; + } + string uri = 6; } From 570014b85e793d40c26b2ecf31ea16de52afc8b3 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 31 Aug 2020 19:04:36 +0200 Subject: [PATCH 002/155] implement default encoding/decoding of a Message object. --- aea/mail/base.proto | 18 ++- aea/mail/base.py | 5 +- aea/mail/base_pb2.py | 230 +++++++++++++++++++++++++++++- aea/protocols/base.py | 99 +++++++++++-- tests/test_protocols/test_base.py | 25 ++++ 5 files changed, 352 insertions(+), 25 deletions(-) diff --git a/aea/mail/base.proto b/aea/mail/base.proto index 4d8dfb6c51..d9dc52dfec 100644 --- a/aea/mail/base.proto +++ b/aea/mail/base.proto @@ -3,8 +3,10 @@ syntax = "proto3"; package fetch.aea; import "google/protobuf/any.proto"; +import "google/protobuf/struct.proto"; -message Message { + +message DialogueMessage { int32 message_id = 1; string dialogue_starter_reference = 2; string dialogue_responder_reference = 3; @@ -12,13 +14,17 @@ message Message { google.protobuf.Any 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; - oneof message { - bytes message_bytes = 4; - Message message_ = 5; - } - string uri = 6; + bytes message = 4; + string uri = 5; } diff --git a/aea/mail/base.py b/aea/mail/base.py index 7e41685ec5..1c24327dfd 100644 --- a/aea/mail/base.py +++ b/aea/mail/base.py @@ -266,6 +266,8 @@ def decode(self, envelope_bytes: bytes) -> "Envelope": """ Decode the envelope. + The default serializer doesn't decode the message field. + :param envelope_bytes: the encoded envelope :return: the envelope """ @@ -276,7 +278,8 @@ def decode(self, envelope_bytes: bytes) -> "Envelope": sender = envelope_pb.sender # pylint: disable=no-member raw_protocol_id = envelope_pb.protocol_id # pylint: disable=no-member protocol_id = PublicId.from_str(raw_protocol_id) - message = envelope_pb.message # pylint: disable=no-member + message = envelope_pb.message + uri_raw = envelope_pb.uri # pylint: disable=no-member if uri_raw != "": # empty string means this field is not set in proto3 uri = URI(uri_raw=uri_raw) diff --git a/aea/mail/base_pb2.py b/aea/mail/base_pb2.py index 60579813c1..3017f52e4d 100644 --- a/aea/mail/base_pb2.py +++ b/aea/mail/base_pb2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: base.proto @@ -15,14 +14,198 @@ _sym_db = _symbol_database.Default() +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 + + DESCRIPTOR = _descriptor.FileDescriptor( name="base.proto", package="fetch.aea", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\nbase.proto\x12\tfetch.aea"Y\n\x08\x45nvelope\x12\n\n\x02to\x18\x01 \x01(\t\x12\x0e\n\x06sender\x18\x02 \x01(\t\x12\x13\n\x0bprotocol_id\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\x0c\x12\x0b\n\x03uri\x18\x05 \x01(\tb\x06proto3' + '\n\nbase.proto\x12\tfetch.aea\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto"\xa6\x01\n\x0f\x44ialogueMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12%\n\x07\x63ontent\x18\x05 \x01(\x0b\x32\x14.google.protobuf.Any"u\n\x07Message\x12\'\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x12\x36\n\x10\x64ialogue_message\x18\x02 \x01(\x0b\x32\x1a.fetch.aea.DialogueMessageH\x00\x42\t\n\x07message"Y\n\x08\x45nvelope\x12\n\n\x02to\x18\x01 \x01(\t\x12\x0e\n\x06sender\x18\x02 \x01(\t\x12\x13\n\x0bprotocol_id\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\x0c\x12\x0b\n\x03uri\x18\x05 \x01(\tb\x06proto3' ), + dependencies=[ + google_dot_protobuf_dot_any__pb2.DESCRIPTOR, + google_dot_protobuf_dot_struct__pb2.DESCRIPTOR, + ], +) + + +_DIALOGUEMESSAGE = _descriptor.Descriptor( + name="DialogueMessage", + full_name="fetch.aea.DialogueMessage", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="message_id", + full_name="fetch.aea.DialogueMessage.message_id", + index=0, + number=1, + type=5, + cpp_type=1, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="dialogue_starter_reference", + full_name="fetch.aea.DialogueMessage.dialogue_starter_reference", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="dialogue_responder_reference", + full_name="fetch.aea.DialogueMessage.dialogue_responder_reference", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="target", + full_name="fetch.aea.DialogueMessage.target", + index=3, + number=4, + type=5, + cpp_type=1, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="content", + full_name="fetch.aea.DialogueMessage.content", + index=4, + number=5, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=83, + serialized_end=249, +) + + +_MESSAGE = _descriptor.Descriptor( + name="Message", + full_name="fetch.aea.Message", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="body", + full_name="fetch.aea.Message.body", + index=0, + number=1, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="dialogue_message", + full_name="fetch.aea.Message.dialogue_message", + index=1, + number=2, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name="message", + full_name="fetch.aea.Message.message", + index=0, + containing_type=None, + fields=[], + ), + ], + serialized_start=251, + serialized_end=368, ) @@ -132,13 +315,52 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=25, - serialized_end=114, + serialized_start=370, + serialized_end=459, ) +_DIALOGUEMESSAGE.fields_by_name[ + "content" +].message_type = google_dot_protobuf_dot_any__pb2._ANY +_MESSAGE.fields_by_name[ + "body" +].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT +_MESSAGE.fields_by_name["dialogue_message"].message_type = _DIALOGUEMESSAGE +_MESSAGE.oneofs_by_name["message"].fields.append(_MESSAGE.fields_by_name["body"]) +_MESSAGE.fields_by_name["body"].containing_oneof = _MESSAGE.oneofs_by_name["message"] +_MESSAGE.oneofs_by_name["message"].fields.append( + _MESSAGE.fields_by_name["dialogue_message"] +) +_MESSAGE.fields_by_name["dialogue_message"].containing_oneof = _MESSAGE.oneofs_by_name[ + "message" +] +DESCRIPTOR.message_types_by_name["DialogueMessage"] = _DIALOGUEMESSAGE +DESCRIPTOR.message_types_by_name["Message"] = _MESSAGE DESCRIPTOR.message_types_by_name["Envelope"] = _ENVELOPE _sym_db.RegisterFileDescriptor(DESCRIPTOR) +DialogueMessage = _reflection.GeneratedProtocolMessageType( + "DialogueMessage", + (_message.Message,), + dict( + DESCRIPTOR=_DIALOGUEMESSAGE, + __module__="base_pb2" + # @@protoc_insertion_point(class_scope:fetch.aea.DialogueMessage) + ), +) +_sym_db.RegisterMessage(DialogueMessage) + +Message = _reflection.GeneratedProtocolMessageType( + "Message", + (_message.Message,), + dict( + DESCRIPTOR=_MESSAGE, + __module__="base_pb2" + # @@protoc_insertion_point(class_scope:fetch.aea.Message) + ), +) +_sym_db.RegisterMessage(Message) + Envelope = _reflection.GeneratedProtocolMessageType( "Envelope", (_message.Message,), diff --git a/aea/protocols/base.py b/aea/protocols/base.py index f79089ac4e..2e7c409544 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -38,6 +38,7 @@ ) from aea.configurations.loader import load_component_configuration from aea.exceptions import enforce +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage logger = logging.getLogger(__name__) @@ -64,9 +65,9 @@ def __init__(self, body: Optional[Dict] = None, **kwargs): :param body: the dictionary of values to hold. :param kwargs: any additional value to add to the body. It will overwrite the body values. """ - self._to = None # type: Optional[Address] - self._sender = None # type: Optional[Address] - self._body = copy(body) if body else {} # type: Dict[str, Any] + self._to: Optional[Address] = None + self._sender: Optional[Address] = None + self._body: Dict[str, Any] = copy(body) if body else {} self._body.update(kwargs) try: self._is_consistent() @@ -212,6 +213,22 @@ def encode(self) -> bytes: """Encode the message.""" return self.serializer.encode(self) + @property + def has_dialogue_info(self) -> bool: + """ + Check whether a message has the dialogue fields populated. + + More precisely, it checks whether the fields 'message_id', + 'target' and 'dialogue_reference' are set. + + :return: True if the message has the dialogue fields set, False otherwise. + """ + return ( + self.is_set("message_id") + and self.is_set("target") + and self.is_set("dialogue_reference") + ) + class Encoder(ABC): """Encoder interface.""" @@ -254,21 +271,75 @@ class ProtobufSerializer(Serializer): @staticmethod def encode(msg: Message) -> bytes: - """Encode a message into bytes using Protobuf.""" - body_json = Struct() - body_json.update(msg.body) # pylint: disable=no-member - body_bytes = body_json.SerializeToString() - return body_bytes + """ + Encode a message into bytes using Protobuf. + + - if one of message_id, target and dialogue_reference are not defined, + serialize only the message body/ + - otherwise, extract those fields from the body and instantiate + a Message struct. + """ + message_pb = ProtobufMessage() + if msg.has_dialogue_info: + dialogue_message_pb = DialogueMessage() + dialogue_message_pb.message_id = msg.message_id + dialogue_message_pb.dialogue_starter_reference = msg.dialogue_reference[0] + dialogue_message_pb.dialogue_responder_reference = msg.dialogue_reference[1] + dialogue_message_pb.target = msg.target + + new_body = copy(msg.body) + new_body.pop("message_id") + new_body.pop("dialogue_reference") + new_body.pop("target") + + body_json = Struct() + body_json.update(new_body) # pylint: disable=no-member + + dialogue_message_pb.content.Pack(body_json) + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + else: + body_json = Struct() + body_json.update(msg.body) # pylint: disable=no-member + message_pb.body.CopyFrom(body_json) + + return message_pb.SerializeToString() @staticmethod def decode(obj: bytes) -> Message: - """Decode bytes into a message using Protobuf.""" - body_json = Struct() - body_json.ParseFromString(obj) + """ + Decode bytes into a message using Protobuf. - body = dict(body_json) - msg = Message(body=body) - return msg + First, try to parse the input as a Protobuf 'Message'; + if it fails, parse the bytes as struct. + """ + message_pb = ProtobufMessage() + message_pb.ParseFromString(obj) + message_type = message_pb.WhichOneof("message") + if message_type == "body": + body = dict(message_pb.body) + msg = Message(body=body) + return msg + elif message_type == "dialogue_message": + dialogue_message_pb = message_pb.dialogue_message + message_id = dialogue_message_pb.message_id + target = dialogue_message_pb.target + dialogue_starter_reference = dialogue_message_pb.dialogue_starter_reference + dialogue_responder_reference = ( + dialogue_message_pb.dialogue_responder_reference + ) + content = dialogue_message_pb.content + body_json = Struct() + content.Unpack(body_json) + body = dict(body_json) + body["message_id"] = message_id + body["target"] = target + body["dialogue_reference"] = ( + dialogue_starter_reference, + dialogue_responder_reference, + ) + return Message(body=body) + else: + raise ValueError("Message type not recognized.") # pragma: nocover class Protocol(Component): diff --git a/tests/test_protocols/test_base.py b/tests/test_protocols/test_base.py index 5a00f11c6a..1cea36588f 100644 --- a/tests/test_protocols/test_base.py +++ b/tests/test_protocols/test_base.py @@ -122,6 +122,12 @@ def setup_class(cls): """Set up the use case.""" cls.message = Message(content="hello") cls.message2 = Message(body={"content": "hello"}) + cls.message3 = Message( + message_id=1, + target=0, + dialogue_reference=("", ""), + body={"content": "hello"}, + ) def test_default_protobuf_serialization(self): """Test that the default Protobuf serialization works.""" @@ -142,6 +148,25 @@ def test_default_protobuf_serialization(self): actual_msg = self.message assert expected_msg == actual_msg + def test_default_protobuf_serialization_with_dialogue_info(self): + """Test that the default Protobuf serialization with dialogue info works.""" + message_bytes = ProtobufSerializer().encode(self.message3) + envelope = Envelope( + to="receiver", + sender="sender", + protocol_id=UNKNOWN_PROTOCOL_PUBLIC_ID, + message=message_bytes, + ) + envelope_bytes = envelope.encode() + + expected_envelope = Envelope.decode(envelope_bytes) + actual_envelope = envelope + assert expected_envelope == actual_envelope + + expected_msg = ProtobufSerializer().decode(expected_envelope.message) + actual_msg = self.message3 + assert expected_msg == actual_msg + def test_set(self): """Test that the set method works.""" key, value = "temporary_key", "temporary_value" From b408143c19e0d1011d58c6c72122ee3ac47675df Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 31 Aug 2020 21:09:26 +0200 Subject: [PATCH 003/155] first prototype with default protocol --- aea/protocols/base.py | 3 +- aea/protocols/default/default.proto | 5 - aea/protocols/default/default_pb2.py | 164 ++++++++----------------- aea/protocols/default/protocol.yaml | 6 +- aea/protocols/default/serialization.py | 31 +++-- aea/protocols/generator/base.py | 53 +++----- packages/hashes.csv | 2 +- 7 files changed, 92 insertions(+), 172 deletions(-) diff --git a/aea/protocols/base.py b/aea/protocols/base.py index 2e7c409544..3036ee856b 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -327,9 +327,8 @@ def decode(obj: bytes) -> Message: dialogue_responder_reference = ( dialogue_message_pb.dialogue_responder_reference ) - content = dialogue_message_pb.content body_json = Struct() - content.Unpack(body_json) + dialogue_message_pb.content.Unpack(body_json) body = dict(body_json) body["message_id"] = message_id body["target"] = target diff --git a/aea/protocols/default/default.proto b/aea/protocols/default/default.proto index 8613a92869..e205482a5f 100644 --- a/aea/protocols/default/default.proto +++ b/aea/protocols/default/default.proto @@ -29,11 +29,6 @@ message DefaultMessage{ } - // Standard DefaultMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Bytes_Performative bytes = 5; Error_Performative error = 6; diff --git a/aea/protocols/default/default_pb2.py b/aea/protocols/default/default_pb2.py index 6b5dee98a3..532ee8b30e 100644 --- a/aea/protocols/default/default_pb2.py +++ b/aea/protocols/default/default_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: default.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -17,7 +19,9 @@ package="fetch.aea.Default", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\rdefault.proto\x12\x11\x66\x65tch.aea.Default"\x97\x06\n\x0e\x44\x65\x66\x61ultMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x45\n\x05\x62ytes\x18\x05 \x01(\x0b\x32\x34.fetch.aea.Default.DefaultMessage.Bytes_PerformativeH\x00\x12\x45\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x34.fetch.aea.Default.DefaultMessage.Error_PerformativeH\x00\x1a\xdb\x01\n\tErrorCode\x12M\n\nerror_code\x18\x01 \x01(\x0e\x32\x39.fetch.aea.Default.DefaultMessage.ErrorCode.ErrorCodeEnum"\x7f\n\rErrorCodeEnum\x12\x18\n\x14UNSUPPORTED_PROTOCOL\x10\x00\x12\x12\n\x0e\x44\x45\x43ODING_ERROR\x10\x01\x12\x13\n\x0fINVALID_MESSAGE\x10\x02\x12\x15\n\x11UNSUPPORTED_SKILL\x10\x03\x12\x14\n\x10INVALID_DIALOGUE\x10\x04\x1a%\n\x12\x42ytes_Performative\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x1a\xf3\x01\n\x12\x45rror_Performative\x12?\n\nerror_code\x18\x01 \x01(\x0b\x32+.fetch.aea.Default.DefaultMessage.ErrorCode\x12\x11\n\terror_msg\x18\x02 \x01(\t\x12W\n\nerror_data\x18\x03 \x03(\x0b\x32\x43.fetch.aea.Default.DefaultMessage.Error_Performative.ErrorDataEntry\x1a\x30\n\x0e\x45rrorDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\rdefault.proto\x12\x11\x66\x65tch.aea.Default"\xa9\x05\n\x0e\x44\x65\x66\x61ultMessage\x12\x45\n\x05\x62ytes\x18\x05 \x01(\x0b\x32\x34.fetch.aea.Default.DefaultMessage.Bytes_PerformativeH\x00\x12\x45\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x34.fetch.aea.Default.DefaultMessage.Error_PerformativeH\x00\x1a\xdb\x01\n\tErrorCode\x12M\n\nerror_code\x18\x01 \x01(\x0e\x32\x39.fetch.aea.Default.DefaultMessage.ErrorCode.ErrorCodeEnum"\x7f\n\rErrorCodeEnum\x12\x18\n\x14UNSUPPORTED_PROTOCOL\x10\x00\x12\x12\n\x0e\x44\x45\x43ODING_ERROR\x10\x01\x12\x13\n\x0fINVALID_MESSAGE\x10\x02\x12\x15\n\x11UNSUPPORTED_SKILL\x10\x03\x12\x14\n\x10INVALID_DIALOGUE\x10\x04\x1a%\n\x12\x42ytes_Performative\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x1a\xf3\x01\n\x12\x45rror_Performative\x12?\n\nerror_code\x18\x01 \x01(\x0b\x32+.fetch.aea.Default.DefaultMessage.ErrorCode\x12\x11\n\terror_msg\x18\x02 \x01(\t\x12W\n\nerror_data\x18\x03 \x03(\x0b\x32\x43.fetch.aea.Default.DefaultMessage.Error_Performative.ErrorDataEntry\x1a\x30\n\x0e\x45rrorDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' + ), ) @@ -61,8 +65,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=400, - serialized_end=527, + serialized_start=290, + serialized_end=417, ) _sym_db.RegisterEnumDescriptor(_DEFAULTMESSAGE_ERRORCODE_ERRORCODEENUM) @@ -101,8 +105,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=308, - serialized_end=527, + serialized_start=198, + serialized_end=417, ) _DEFAULTMESSAGE_BYTES_PERFORMATIVE = _descriptor.Descriptor( @@ -121,7 +125,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -139,8 +143,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=529, - serialized_end=566, + serialized_start=419, + serialized_end=456, ) _DEFAULTMESSAGE_ERROR_PERFORMATIVE_ERRORDATAENTRY = _descriptor.Descriptor( @@ -159,7 +163,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -177,7 +181,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -190,13 +194,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=764, - serialized_end=812, + serialized_start=654, + serialized_end=702, ) _DEFAULTMESSAGE_ERROR_PERFORMATIVE = _descriptor.Descriptor( @@ -233,7 +237,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -269,8 +273,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=569, - serialized_end=812, + serialized_start=459, + serialized_end=702, ) _DEFAULTMESSAGE = _descriptor.Descriptor( @@ -280,82 +284,10 @@ file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.Default.DefaultMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.Default.DefaultMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.Default.DefaultMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.Default.DefaultMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="bytes", full_name="fetch.aea.Default.DefaultMessage.bytes", - index=4, + index=0, number=5, type=11, cpp_type=10, @@ -373,7 +305,7 @@ _descriptor.FieldDescriptor( name="error", full_name="fetch.aea.Default.DefaultMessage.error", - index=5, + index=1, number=6, type=11, cpp_type=10, @@ -410,7 +342,7 @@ ), ], serialized_start=37, - serialized_end=828, + serialized_end=718, ) _DEFAULTMESSAGE_ERRORCODE.fields_by_name[ @@ -453,47 +385,47 @@ DefaultMessage = _reflection.GeneratedProtocolMessageType( "DefaultMessage", (_message.Message,), - { - "ErrorCode": _reflection.GeneratedProtocolMessageType( + dict( + ErrorCode=_reflection.GeneratedProtocolMessageType( "ErrorCode", (_message.Message,), - { - "DESCRIPTOR": _DEFAULTMESSAGE_ERRORCODE, - "__module__": "default_pb2" + dict( + DESCRIPTOR=_DEFAULTMESSAGE_ERRORCODE, + __module__="default_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.Default.DefaultMessage.ErrorCode) - }, + ), ), - "Bytes_Performative": _reflection.GeneratedProtocolMessageType( + Bytes_Performative=_reflection.GeneratedProtocolMessageType( "Bytes_Performative", (_message.Message,), - { - "DESCRIPTOR": _DEFAULTMESSAGE_BYTES_PERFORMATIVE, - "__module__": "default_pb2" + dict( + DESCRIPTOR=_DEFAULTMESSAGE_BYTES_PERFORMATIVE, + __module__="default_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.Default.DefaultMessage.Bytes_Performative) - }, + ), ), - "Error_Performative": _reflection.GeneratedProtocolMessageType( + Error_Performative=_reflection.GeneratedProtocolMessageType( "Error_Performative", (_message.Message,), - { - "ErrorDataEntry": _reflection.GeneratedProtocolMessageType( + dict( + ErrorDataEntry=_reflection.GeneratedProtocolMessageType( "ErrorDataEntry", (_message.Message,), - { - "DESCRIPTOR": _DEFAULTMESSAGE_ERROR_PERFORMATIVE_ERRORDATAENTRY, - "__module__": "default_pb2" + dict( + DESCRIPTOR=_DEFAULTMESSAGE_ERROR_PERFORMATIVE_ERRORDATAENTRY, + __module__="default_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.Default.DefaultMessage.Error_Performative.ErrorDataEntry) - }, + ), ), - "DESCRIPTOR": _DEFAULTMESSAGE_ERROR_PERFORMATIVE, - "__module__": "default_pb2" + DESCRIPTOR=_DEFAULTMESSAGE_ERROR_PERFORMATIVE, + __module__="default_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.Default.DefaultMessage.Error_Performative) - }, + ), ), - "DESCRIPTOR": _DEFAULTMESSAGE, - "__module__": "default_pb2" + DESCRIPTOR=_DEFAULTMESSAGE, + __module__="default_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.Default.DefaultMessage) - }, + ), ) _sym_db.RegisterMessage(DefaultMessage) _sym_db.RegisterMessage(DefaultMessage.ErrorCode) diff --git a/aea/protocols/default/protocol.yaml b/aea/protocols/default/protocol.yaml index 966211ee54..420adfb7b5 100644 --- a/aea/protocols/default/protocol.yaml +++ b/aea/protocols/default/protocol.yaml @@ -9,11 +9,11 @@ fingerprint: README.md: QmcoWaezoTDWvV749RJBNB7WmXCrNuqZpmGKSiUPPNBsGi __init__.py: QmPMtKUrzVJp594VqNuapJzCesWLQ6Awjqv2ufG3wKNRmH custom_types.py: QmRcgwDdTxkSHyfF9eoMtsb5P5GJDm4oyLq5W6ZBko1MFU - default.proto: QmNzMUvXkBm5bbitR5Yi49ADiwNn1FhCvXqSKKoqAPZyXv - default_pb2.py: QmSRFi1s3jcqnPuk4yopJeNuC6o58RL7dvEdt85uns3B3N + default.proto: QmP9QG2c2nTWYxEMDeSS2JHUJ4b3KMEeoov1fWHZtcJ9wv + default_pb2.py: QmbfLCqPe7XyJLpoeT87bG1KTBTRbmaNrPgU39DHQWgpgW dialogues.py: Qmc991snbS7DwFxo1cKcq1rQ2uj7y8ukp14kfe2zve387C message.py: QmeaadvKib9QqpjZgd7NiDUqGRpC2eZPVpgq1dY3PYacht - serialization.py: QmRnajc9BNCftjGkYTKCP9LnD3rq197jM3Re1GDVJTHh2y + serialization.py: QmZVLCas8LRuE6SkzGGtb3TB5oSc1J2f7X4bJuxi8qyQ9i fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/aea/protocols/default/serialization.py b/aea/protocols/default/serialization.py index fb886974cd..cf9a35a8bd 100644 --- a/aea/protocols/default/serialization.py +++ b/aea/protocols/default/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer from aea.protocols.default import default_pb2 @@ -40,12 +41,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(DefaultMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() default_msg = default_pb2.DefaultMessage() - default_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - default_msg.dialogue_starter_reference = dialogue_reference[0] - default_msg.dialogue_responder_reference = dialogue_reference[1] - default_msg.target = msg.target + 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 == DefaultMessage.Performative.BYTES: @@ -65,8 +69,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - default_bytes = default_msg.SerializeToString() - return default_bytes + dialogue_message_pb.content.Pack(default_msg) + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -76,15 +83,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'Default' message. """ + message_pb = ProtobufMessage() default_pb = default_pb2.DefaultMessage() - default_pb.ParseFromString(obj) - message_id = default_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - default_pb.dialogue_starter_reference, - default_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = default_pb.target + target = message_pb.dialogue_message.target + message_pb.dialogue_message.content.Unpack(default_pb) performative = default_pb.WhichOneof("performative") performative_id = DefaultMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index 9468a86200..c370037fb7 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -1488,6 +1488,7 @@ def _serialization_class_str(self) -> str: # Imports cls_str += self.indent + "from typing import Any, Dict, cast\n\n" + cls_str += self.indent + "from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage\n" cls_str += MESSAGE_IMPORT + "\n" cls_str += SERIALIZER_IMPORT + "\n\n" cls_str += self.indent + "from {} import (\n {}_pb2,\n)\n".format( @@ -1531,28 +1532,28 @@ def _serialization_class_str(self) -> str: cls_str += self.indent + "msg = cast({}Message, msg)\n".format( self.protocol_specification_in_camel_case ) - cls_str += self.indent + "{}_msg = {}_pb2.{}Message()\n".format( + cls_str += self.indent + "message_pb = ProtobufMessage()\n" + cls_str += self.indent + "dialogue_message_pb = DialogueMessage()\n" + cls_str += self.indent + "{}_msg = {}_pb2.{}Message()\n\n".format( self.protocol_specification.name, self.protocol_specification.name, self.protocol_specification_in_camel_case, ) - cls_str += self.indent + "{}_msg.message_id = msg.message_id\n".format( - self.protocol_specification.name - ) + cls_str += self.indent + "dialogue_message_pb.message_id = msg.message_id\n" cls_str += self.indent + "dialogue_reference = msg.dialogue_reference\n" cls_str += ( self.indent - + "{}_msg.dialogue_starter_reference = dialogue_reference[0]\n".format( + + "dialogue_message_pb.dialogue_starter_reference = dialogue_reference[0]\n".format( self.protocol_specification.name ) ) cls_str += ( self.indent - + "{}_msg.dialogue_responder_reference = dialogue_reference[1]\n".format( + + "dialogue_message_pb.dialogue_responder_reference = dialogue_reference[1]\n".format( self.protocol_specification.name ) ) - cls_str += self.indent + "{}_msg.target = msg.target\n\n".format( + cls_str += self.indent + "dialogue_message_pb.target = msg.target\n\n".format( self.protocol_specification.name ) cls_str += self.indent + "performative_id = msg.performative\n" @@ -1592,12 +1593,12 @@ def _serialization_class_str(self) -> str: ) self._change_indent(-1) - cls_str += self.indent + "{}_bytes = {}_msg.SerializeToString()\n".format( - self.protocol_specification.name, self.protocol_specification.name - ) - cls_str += self.indent + "return {}_bytes\n\n".format( - self.protocol_specification.name + cls_str += self.indent + "dialogue_message_pb.content.Pack({}_msg)\n\n".format( + self.protocol_specification.name, ) + cls_str += self.indent + "message_pb.dialogue_message.CopyFrom(dialogue_message_pb)\n" + cls_str += self.indent + "message_bytes = message_pb.SerializeToString()\n" + cls_str += self.indent + "return message_bytes\n" self._change_indent(-1) # decoder @@ -1613,26 +1614,22 @@ def _serialization_class_str(self) -> str: self.protocol_specification_in_camel_case ) cls_str += self.indent + '"""\n' + cls_str += self.indent + "message_pb = ProtobufMessage()\n" cls_str += self.indent + "{}_pb = {}_pb2.{}Message()\n".format( self.protocol_specification.name, self.protocol_specification.name, self.protocol_specification_in_camel_case, ) - cls_str += self.indent + "{}_pb.ParseFromString(obj)\n".format( - self.protocol_specification.name - ) - cls_str += self.indent + "message_id = {}_pb.message_id\n".format( - self.protocol_specification.name - ) + cls_str += self.indent + "message_pb.ParseFromString(obj)\n" + cls_str += self.indent + "message_id = message_pb.dialogue_message.message_id\n" cls_str += ( self.indent - + "dialogue_reference = ({}_pb.dialogue_starter_reference, {}_pb.dialogue_responder_reference)\n".format( - self.protocol_specification.name, self.protocol_specification.name - ) + + "dialogue_reference = (message_pb.dialogue_message.dialogue_starter_reference, message_pb.dialogue_message.dialogue_responder_reference)\n" ) - cls_str += self.indent + "target = {}_pb.target\n\n".format( + cls_str += self.indent + "target = message_pb.dialogue_message.target\n\n".format( self.protocol_specification.name ) + cls_str += self.indent + "message_pb.dialogue_message.content.Unpack({}_pb)\n".format(self.protocol_specification.name) cls_str += ( self.indent + 'performative = {}_pb.WhichOneof("performative")\n'.format( @@ -1822,18 +1819,6 @@ def _protocol_buffer_schema_str(self) -> str: proto_buff_schema_str += self.indent + "}\n\n" proto_buff_schema_str += "\n" - # meta-data - proto_buff_schema_str += self.indent + "// Standard {}Message fields\n".format( - self.protocol_specification_in_camel_case - ) - proto_buff_schema_str += self.indent + "int32 message_id = 1;\n" - proto_buff_schema_str += ( - self.indent + "string dialogue_starter_reference = 2;\n" - ) - proto_buff_schema_str += ( - self.indent + "string dialogue_responder_reference = 3;\n" - ) - proto_buff_schema_str += self.indent + "int32 target = 4;\n" proto_buff_schema_str += self.indent + "oneof performative{\n" self._change_indent(1) tag_no = 5 diff --git a/packages/hashes.csv b/packages/hashes.csv index 3951e1ebcb..adb11197f6 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -35,7 +35,7 @@ fetchai/connections/webhook,QmQJHzHQBF3USzHNiZ35thj5RNXYuFcQ78yxr3TS9gkQJo fetchai/contracts/erc1155,QmRPpD2RSxgZfhtuiv4vRp6oP1uZ4nsECKrCkwmyUgzUpq fetchai/contracts/scaffold,QmVfDLFc2Ly1iDe8Bd6D4SL28wjXZ4zMkuFA3gYWxbubXG fetchai/protocols/contract_api,QmYxGJTnAEAApBNXqdxAd6hPPkgTvnwJAqCfoi1PWTfbF2 -fetchai/protocols/default,Qmf5k68VEGfAnTmzSN6Gke9vUq27qqZtE5z6iACgV8wPnR +fetchai/protocols/default,QmT6pQCt5nKCMVjmY7W9SShtSS5QBN2LfUdvX1ZdQBap5L fetchai/protocols/fipa,QmbxnVbH9AdsgU1Ye3SvSCjPxxwAH1kAGjeVBF9SFnjrb5 fetchai/protocols/gym,QmcoRdy2RTsXw5o7ASWVX5P34XuNMegCzGm9BjxAUXptBm fetchai/protocols/http,QmPF2HHxGt6XGQ4SjhhefGR5VaQxZiGTFz6RK6Uay9f9xN From 23b60b06ff946b51f15920e74c1c08c4bbfd2833 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 31 Aug 2020 21:16:36 +0200 Subject: [PATCH 004/155] fix linting issues --- aea/mail/base.py | 2 +- aea/protocols/base.py | 19 +++++++++++-------- aea/protocols/generator/base.py | 30 ++++++++++++++++-------------- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/aea/mail/base.py b/aea/mail/base.py index 1c24327dfd..19b2bb7d64 100644 --- a/aea/mail/base.py +++ b/aea/mail/base.py @@ -278,7 +278,7 @@ def decode(self, envelope_bytes: bytes) -> "Envelope": sender = envelope_pb.sender # pylint: disable=no-member raw_protocol_id = envelope_pb.protocol_id # pylint: disable=no-member protocol_id = PublicId.from_str(raw_protocol_id) - message = envelope_pb.message + message = envelope_pb.message # pylint: disable=no-member uri_raw = envelope_pb.uri # pylint: disable=no-member if uri_raw != "": # empty string means this field is not set in proto3 diff --git a/aea/protocols/base.py b/aea/protocols/base.py index 3036ee856b..64dbe41925 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -295,12 +295,14 @@ def encode(msg: Message) -> bytes: body_json = Struct() body_json.update(new_body) # pylint: disable=no-member - dialogue_message_pb.content.Pack(body_json) - message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + dialogue_message_pb.content.Pack(body_json) # pylint: disable=no-member + message_pb.dialogue_message.CopyFrom( # pylint: disable=no-member + dialogue_message_pb + ) else: body_json = Struct() body_json.update(msg.body) # pylint: disable=no-member - message_pb.body.CopyFrom(body_json) + message_pb.body.CopyFrom(body_json) # pylint: disable=no-member return message_pb.SerializeToString() @@ -316,11 +318,13 @@ def decode(obj: bytes) -> Message: message_pb.ParseFromString(obj) message_type = message_pb.WhichOneof("message") if message_type == "body": - body = dict(message_pb.body) + body = dict(message_pb.body) # pylint: disable=no-member msg = Message(body=body) return msg - elif message_type == "dialogue_message": - dialogue_message_pb = message_pb.dialogue_message + if message_type == "dialogue_message": + dialogue_message_pb = ( + message_pb.dialogue_message # pylint: disable=no-member + ) message_id = dialogue_message_pb.message_id target = dialogue_message_pb.target dialogue_starter_reference = dialogue_message_pb.dialogue_starter_reference @@ -337,8 +341,7 @@ def decode(obj: bytes) -> Message: dialogue_responder_reference, ) return Message(body=body) - else: - raise ValueError("Message type not recognized.") # pragma: nocover + raise ValueError("Message type not recognized.") # pragma: nocover class Protocol(Component): diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index c370037fb7..0181d68759 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -1488,7 +1488,10 @@ def _serialization_class_str(self) -> str: # Imports cls_str += self.indent + "from typing import Any, Dict, cast\n\n" - cls_str += self.indent + "from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage\n" + cls_str += ( + self.indent + + "from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage\n" + ) cls_str += MESSAGE_IMPORT + "\n" cls_str += SERIALIZER_IMPORT + "\n\n" cls_str += self.indent + "from {} import (\n {}_pb2,\n)\n".format( @@ -1543,19 +1546,13 @@ def _serialization_class_str(self) -> str: cls_str += self.indent + "dialogue_reference = msg.dialogue_reference\n" cls_str += ( self.indent - + "dialogue_message_pb.dialogue_starter_reference = dialogue_reference[0]\n".format( - self.protocol_specification.name - ) + + "dialogue_message_pb.dialogue_starter_reference = dialogue_reference[0]\n" ) cls_str += ( self.indent - + "dialogue_message_pb.dialogue_responder_reference = dialogue_reference[1]\n".format( - self.protocol_specification.name - ) - ) - cls_str += self.indent + "dialogue_message_pb.target = msg.target\n\n".format( - self.protocol_specification.name + + "dialogue_message_pb.dialogue_responder_reference = dialogue_reference[1]\n" ) + cls_str += self.indent + "dialogue_message_pb.target = msg.target\n\n" cls_str += self.indent + "performative_id = msg.performative\n" counter = 1 for performative, contents in self.spec.speech_acts.items(): @@ -1596,7 +1593,9 @@ def _serialization_class_str(self) -> str: cls_str += self.indent + "dialogue_message_pb.content.Pack({}_msg)\n\n".format( self.protocol_specification.name, ) - cls_str += self.indent + "message_pb.dialogue_message.CopyFrom(dialogue_message_pb)\n" + cls_str += ( + self.indent + "message_pb.dialogue_message.CopyFrom(dialogue_message_pb)\n" + ) cls_str += self.indent + "message_bytes = message_pb.SerializeToString()\n" cls_str += self.indent + "return message_bytes\n" self._change_indent(-1) @@ -1626,10 +1625,13 @@ def _serialization_class_str(self) -> str: self.indent + "dialogue_reference = (message_pb.dialogue_message.dialogue_starter_reference, message_pb.dialogue_message.dialogue_responder_reference)\n" ) - cls_str += self.indent + "target = message_pb.dialogue_message.target\n\n".format( - self.protocol_specification.name + cls_str += self.indent + "target = message_pb.dialogue_message.target\n\n" + cls_str += ( + self.indent + + "message_pb.dialogue_message.content.Unpack({}_pb)\n".format( + self.protocol_specification.name + ) ) - cls_str += self.indent + "message_pb.dialogue_message.content.Unpack({}_pb)\n".format(self.protocol_specification.name) cls_str += ( self.indent + 'performative = {}_pb.WhichOneof("performative")\n'.format( From 26c16f5074f77da94e392340517dc1162adbbfaf Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 31 Aug 2020 22:11:07 +0200 Subject: [PATCH 005/155] update test protocol generated --- tests/data/generator/t_protocol/protocol.yaml | 6 +- .../generator/t_protocol/serialization.py | 31 +- .../generator/t_protocol/t_protocol.proto | 5 - .../generator/t_protocol/t_protocol_pb2.py | 594 ++++++++---------- .../generator/t_protocol_no_ct/protocol.yaml | 6 +- .../t_protocol_no_ct/serialization.py | 31 +- .../t_protocol_no_ct/t_protocol_no_ct.proto | 5 - .../t_protocol_no_ct/t_protocol_no_ct_pb2.py | 544 +++++++--------- .../test_generator/test_generator.py | 5 - 9 files changed, 547 insertions(+), 680 deletions(-) diff --git a/tests/data/generator/t_protocol/protocol.yaml b/tests/data/generator/t_protocol/protocol.yaml index 76ced6e9c8..a38e8c0214 100644 --- a/tests/data/generator/t_protocol/protocol.yaml +++ b/tests/data/generator/t_protocol/protocol.yaml @@ -10,9 +10,9 @@ fingerprint: custom_types.py: QmVboXL98TzRtreCRMrCF3U9xjRGRkGJjNgDBTAm5GXyLq dialogues.py: QmVUoaW4CNgjZNy6PzmQrSYTCdeWQERsQR5maXhD9cd6HF message.py: QmS3NcTMgbDx1ZkXkzwfiML26LU9FPfgjg2XznpL8wueQR - serialization.py: QmcS33k6rHgCCkhBuQ5kiXVKFMxxEzcZManshPD51MEHbw - t_protocol.proto: QmRuYvnojwkyZLzeECH3snomgoMJTB3m48yJiLq8LYsVb8 - t_protocol_pb2.py: QmXrSgBBJCj8hbGCynKrvdkSDohQzHLPBA2vi5hDHmaGid + serialization.py: QmZEWNPf4xV45vgNYMoEpuybyVAg7dkTo2jDjUqN6VVvS7 + t_protocol.proto: Qmc1JYbXiPNGQGL2Sj5FJm4VEZho87Nor3aa4Q29ymj5fs + t_protocol_pb2.py: QmcEHyEAQPacC8YzAWv93p5mhEdyHUGaN93rifBmo8GqL9 fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/generator/t_protocol/serialization.py b/tests/data/generator/t_protocol/serialization.py index 942f766ba8..5d4574dfe4 100644 --- a/tests/data/generator/t_protocol/serialization.py +++ b/tests/data/generator/t_protocol/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer @@ -41,12 +42,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(TProtocolMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() t_protocol_msg = t_protocol_pb2.TProtocolMessage() - t_protocol_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - t_protocol_msg.dialogue_starter_reference = dialogue_reference[0] - t_protocol_msg.dialogue_responder_reference = dialogue_reference[1] - t_protocol_msg.target = msg.target + 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: @@ -274,8 +278,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - t_protocol_bytes = t_protocol_msg.SerializeToString() - return t_protocol_bytes + dialogue_message_pb.content.Pack(t_protocol_msg) + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -285,15 +292,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'TProtocol' message. """ + message_pb = ProtobufMessage() t_protocol_pb = t_protocol_pb2.TProtocolMessage() - t_protocol_pb.ParseFromString(obj) - message_id = t_protocol_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - t_protocol_pb.dialogue_starter_reference, - t_protocol_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = t_protocol_pb.target + target = message_pb.dialogue_message.target + message_pb.dialogue_message.content.Unpack(t_protocol_pb) performative = t_protocol_pb.WhichOneof("performative") performative_id = TProtocolMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/tests/data/generator/t_protocol/t_protocol.proto b/tests/data/generator/t_protocol/t_protocol.proto index b408c295d7..f977c2fb72 100644 --- a/tests/data/generator/t_protocol/t_protocol.proto +++ b/tests/data/generator/t_protocol/t_protocol.proto @@ -98,11 +98,6 @@ message TProtocolMessage{ message Performative_Empty_Contents_Performative{} - // Standard TProtocolMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Performative_Ct_Performative performative_ct = 5; Performative_Empty_Contents_Performative performative_empty_contents = 6; diff --git a/tests/data/generator/t_protocol/t_protocol_pb2.py b/tests/data/generator/t_protocol/t_protocol_pb2.py index c021c11aa3..9b4f4e62b4 100644 --- a/tests/data/generator/t_protocol/t_protocol_pb2.py +++ b/tests/data/generator/t_protocol/t_protocol_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: t_protocol.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -17,7 +19,9 @@ package="fetch.aea.TProtocol", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\x10t_protocol.proto\x12\x13\x66\x65tch.aea.TProtocol"\xab\x33\n\x10TProtocolMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12]\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32\x42.fetch.aea.TProtocol.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12u\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32N.fetch.aea.TProtocol.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12]\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32\x42.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12[\n\x0eperformative_o\x18\x08 \x01(\x0b\x32\x41.fetch.aea.TProtocol.TProtocolMessage.Performative_O_PerformativeH\x00\x12_\n\x10performative_pct\x18\t \x01(\x0b\x32\x43.fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12_\n\x10performative_pmt\x18\n \x01(\x0b\x32\x43.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12]\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32\x42.fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\x9c\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x05\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(\x05\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12R\n\ndict_field\x18\x08 \x03(\x0b\x32>.fetch.aea.TProtocol.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x63\n\x1cPerformative_Ct_Performative\x12\x43\n\ncontent_ct\x18\x01 \x01(\x0b\x32/.fetch.aea.TProtocol.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(\x05\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(\x05\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(\x05\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\xe7\x15\n\x1dPerformative_Pmt_Performative\x12|\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12x\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12|\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12z\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12x\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12~\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32].fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12z\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12~\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32].fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12|\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12z\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12|\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12x\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12|\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12z\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12x\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xf9\x0b\n\x1cPerformative_Mt_Performative\x12W\n\x1e\x63ontent_union_1_type_DataModel\x18\x01 \x01(\x0b\x32/.fetch.aea.TProtocol.TProtocolMessage.DataModel\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x02 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x04 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x05 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x06 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x07 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x08 \x03(\x08\x12\x93\x01\n$content_union_1_type_dict_of_str_int\x18\t \x03(\x0b\x32\x65.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\n \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x0b \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0c \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\r \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\x0e \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0f \x03(\x0c\x12\x93\x01\n$content_union_2_type_dict_of_str_int\x18\x10 \x03(\x0b\x32\x65.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x97\x01\n&content_union_2_type_dict_of_int_float\x18\x11 \x03(\x0b\x32g.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\x99\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x12 \x03(\x0b\x32h.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\x95\x04\n\x1bPerformative_O_Performative\x12\x45\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32/.fetch.aea.TProtocol.TProtocolMessage.DataModel\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(\x05\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\x12y\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32Y.fetch.aea.TProtocol.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\x10t_protocol.proto\x12\x13\x66\x65tch.aea.TProtocol"\xbd\x32\n\x10TProtocolMessage\x12]\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32\x42.fetch.aea.TProtocol.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12u\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32N.fetch.aea.TProtocol.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12]\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32\x42.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12[\n\x0eperformative_o\x18\x08 \x01(\x0b\x32\x41.fetch.aea.TProtocol.TProtocolMessage.Performative_O_PerformativeH\x00\x12_\n\x10performative_pct\x18\t \x01(\x0b\x32\x43.fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12_\n\x10performative_pmt\x18\n \x01(\x0b\x32\x43.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12]\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32\x42.fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\x9c\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x05\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(\x05\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12R\n\ndict_field\x18\x08 \x03(\x0b\x32>.fetch.aea.TProtocol.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x63\n\x1cPerformative_Ct_Performative\x12\x43\n\ncontent_ct\x18\x01 \x01(\x0b\x32/.fetch.aea.TProtocol.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(\x05\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(\x05\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(\x05\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\xe7\x15\n\x1dPerformative_Pmt_Performative\x12|\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12x\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12|\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12z\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12x\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12~\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32].fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12z\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12~\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32].fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12|\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12z\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12|\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12x\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12|\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12z\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12x\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xf9\x0b\n\x1cPerformative_Mt_Performative\x12W\n\x1e\x63ontent_union_1_type_DataModel\x18\x01 \x01(\x0b\x32/.fetch.aea.TProtocol.TProtocolMessage.DataModel\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x02 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x04 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x05 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x06 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x07 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x08 \x03(\x08\x12\x93\x01\n$content_union_1_type_dict_of_str_int\x18\t \x03(\x0b\x32\x65.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\n \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x0b \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0c \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\r \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\x0e \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0f \x03(\x0c\x12\x93\x01\n$content_union_2_type_dict_of_str_int\x18\x10 \x03(\x0b\x32\x65.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x97\x01\n&content_union_2_type_dict_of_int_float\x18\x11 \x03(\x0b\x32g.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\x99\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x12 \x03(\x0b\x32h.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\x95\x04\n\x1bPerformative_O_Performative\x12\x45\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32/.fetch.aea.TProtocol.TProtocolMessage.DataModel\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(\x05\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\x12y\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32Y.fetch.aea.TProtocol.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + ), ) @@ -68,13 +72,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1100, - serialized_end=1148, + serialized_start=990, + serialized_end=1038, ) _TPROTOCOLMESSAGE_DATAMODEL = _descriptor.Descriptor( @@ -93,7 +97,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -165,7 +169,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -237,8 +241,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=864, - serialized_end=1148, + serialized_start=754, + serialized_end=1038, ) _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE = _descriptor.Descriptor( @@ -275,8 +279,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1150, - serialized_end=1249, + serialized_start=1040, + serialized_end=1139, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _descriptor.Descriptor( @@ -295,7 +299,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -367,7 +371,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -385,8 +389,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1252, - serialized_end=1392, + serialized_start=1142, + serialized_end=1282, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = _descriptor.Descriptor( @@ -585,8 +589,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1395, - serialized_end=1691, + serialized_start=1285, + serialized_end=1581, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = _descriptor.Descriptor( @@ -623,7 +627,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -636,13 +640,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3597, - serialized_end=3655, + serialized_start=3487, + serialized_end=3545, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = _descriptor.Descriptor( @@ -692,13 +696,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3657, - serialized_end=3713, + serialized_start=3547, + serialized_end=3603, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = _descriptor.Descriptor( @@ -748,13 +752,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3715, - serialized_end=3773, + serialized_start=3605, + serialized_end=3663, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = _descriptor.Descriptor( @@ -804,13 +808,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3775, - serialized_end=3832, + serialized_start=3665, + serialized_end=3722, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = _descriptor.Descriptor( @@ -847,7 +851,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -860,13 +864,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3834, - serialized_end=3890, + serialized_start=3724, + serialized_end=3780, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = _descriptor.Descriptor( @@ -903,7 +907,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -916,13 +920,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3892, - serialized_end=3951, + serialized_start=3782, + serialized_end=3841, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = _descriptor.Descriptor( @@ -972,13 +976,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3953, - serialized_end=4010, + serialized_start=3843, + serialized_end=3900, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = _descriptor.Descriptor( @@ -1028,13 +1032,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4012, - serialized_end=4071, + serialized_start=3902, + serialized_end=3961, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = _descriptor.Descriptor( @@ -1084,13 +1088,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4073, - serialized_end=4131, + serialized_start=3963, + serialized_end=4021, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = _descriptor.Descriptor( @@ -1127,7 +1131,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1140,13 +1144,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4133, - serialized_end=4190, + serialized_start=4023, + serialized_end=4080, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = _descriptor.Descriptor( @@ -1165,7 +1169,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1183,7 +1187,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -1196,13 +1200,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4192, - serialized_end=4250, + serialized_start=4082, + serialized_end=4140, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = _descriptor.Descriptor( @@ -1221,7 +1225,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1252,13 +1256,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4252, - serialized_end=4308, + serialized_start=4142, + serialized_end=4198, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = _descriptor.Descriptor( @@ -1277,7 +1281,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1308,13 +1312,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4310, - serialized_end=4368, + serialized_start=4200, + serialized_end=4258, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = _descriptor.Descriptor( @@ -1333,7 +1337,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1364,13 +1368,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4370, - serialized_end=4427, + serialized_start=4260, + serialized_end=4317, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = _descriptor.Descriptor( @@ -1389,7 +1393,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1407,7 +1411,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1420,13 +1424,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4429, - serialized_end=4485, + serialized_start=4319, + serialized_end=4375, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = _descriptor.Descriptor( @@ -1731,8 +1735,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1694, - serialized_end=4485, + serialized_start=1584, + serialized_end=4375, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( @@ -1751,7 +1755,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1782,13 +1786,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5734, - serialized_end=5802, + serialized_start=5624, + serialized_end=5692, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( @@ -1807,7 +1811,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1838,13 +1842,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5804, - serialized_end=5872, + serialized_start=5694, + serialized_end=5762, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _descriptor.Descriptor( @@ -1894,13 +1898,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5874, - serialized_end=5944, + serialized_start=5764, + serialized_end=5834, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _descriptor.Descriptor( @@ -1937,7 +1941,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -1950,13 +1954,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5946, - serialized_end=6017, + serialized_start=5836, + serialized_end=5907, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _descriptor.Descriptor( @@ -1993,7 +1997,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -2065,7 +2069,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -2304,8 +2308,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4488, - serialized_end=6017, + serialized_start=4378, + serialized_end=5907, ) _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = _descriptor.Descriptor( @@ -2324,7 +2328,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -2355,13 +2359,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6496, - serialized_end=6553, + serialized_start=6386, + serialized_end=6443, ) _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _descriptor.Descriptor( @@ -2562,8 +2566,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6020, - serialized_end=6553, + serialized_start=5910, + serialized_end=6443, ) _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = _descriptor.Descriptor( @@ -2581,8 +2585,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6555, - serialized_end=6597, + serialized_start=6445, + serialized_end=6487, ) _TPROTOCOLMESSAGE = _descriptor.Descriptor( @@ -2592,82 +2596,10 @@ file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.TProtocol.TProtocolMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.TProtocol.TProtocolMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.TProtocol.TProtocolMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.TProtocol.TProtocolMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="performative_ct", full_name="fetch.aea.TProtocol.TProtocolMessage.performative_ct", - index=4, + index=0, number=5, type=11, cpp_type=10, @@ -2685,7 +2617,7 @@ _descriptor.FieldDescriptor( name="performative_empty_contents", full_name="fetch.aea.TProtocol.TProtocolMessage.performative_empty_contents", - index=5, + index=1, number=6, type=11, cpp_type=10, @@ -2703,7 +2635,7 @@ _descriptor.FieldDescriptor( name="performative_mt", full_name="fetch.aea.TProtocol.TProtocolMessage.performative_mt", - index=6, + index=2, number=7, type=11, cpp_type=10, @@ -2721,7 +2653,7 @@ _descriptor.FieldDescriptor( name="performative_o", full_name="fetch.aea.TProtocol.TProtocolMessage.performative_o", - index=7, + index=3, number=8, type=11, cpp_type=10, @@ -2739,7 +2671,7 @@ _descriptor.FieldDescriptor( name="performative_pct", full_name="fetch.aea.TProtocol.TProtocolMessage.performative_pct", - index=8, + index=4, number=9, type=11, cpp_type=10, @@ -2757,7 +2689,7 @@ _descriptor.FieldDescriptor( name="performative_pmt", full_name="fetch.aea.TProtocol.TProtocolMessage.performative_pmt", - index=9, + index=5, number=10, type=11, cpp_type=10, @@ -2775,7 +2707,7 @@ _descriptor.FieldDescriptor( name="performative_pt", full_name="fetch.aea.TProtocol.TProtocolMessage.performative_pt", - index=10, + index=6, number=11, type=11, cpp_type=10, @@ -2817,7 +2749,7 @@ ), ], serialized_start=42, - serialized_end=6613, + serialized_end=6503, ) _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY.containing_type = _TPROTOCOLMESSAGE_DATAMODEL @@ -3054,272 +2986,272 @@ TProtocolMessage = _reflection.GeneratedProtocolMessageType( "TProtocolMessage", (_message.Message,), - { - "DataModel": _reflection.GeneratedProtocolMessageType( + dict( + DataModel=_reflection.GeneratedProtocolMessageType( "DataModel", (_message.Message,), - { - "DictFieldEntry": _reflection.GeneratedProtocolMessageType( + dict( + DictFieldEntry=_reflection.GeneratedProtocolMessageType( "DictFieldEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.DataModel.DictFieldEntry) - }, + ), ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL, - "__module__": "t_protocol_pb2" + DESCRIPTOR=_TPROTOCOLMESSAGE_DATAMODEL, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.DataModel) - }, + ), ), - "Performative_Ct_Performative": _reflection.GeneratedProtocolMessageType( + Performative_Ct_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Ct_Performative", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Ct_Performative) - }, + ), ), - "Performative_Pt_Performative": _reflection.GeneratedProtocolMessageType( + Performative_Pt_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Pt_Performative", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_Performative) - }, + ), ), - "Performative_Pct_Performative": _reflection.GeneratedProtocolMessageType( + Performative_Pct_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Pct_Performative", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative) - }, + ), ), - "Performative_Pmt_Performative": _reflection.GeneratedProtocolMessageType( + Performative_Pmt_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Pmt_Performative", (_message.Message,), - { - "ContentDictIntBytesEntry": _reflection.GeneratedProtocolMessageType( + dict( + ContentDictIntBytesEntry=_reflection.GeneratedProtocolMessageType( "ContentDictIntBytesEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) - }, + ), ), - "ContentDictIntIntEntry": _reflection.GeneratedProtocolMessageType( + ContentDictIntIntEntry=_reflection.GeneratedProtocolMessageType( "ContentDictIntIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) - }, + ), ), - "ContentDictIntFloatEntry": _reflection.GeneratedProtocolMessageType( + ContentDictIntFloatEntry=_reflection.GeneratedProtocolMessageType( "ContentDictIntFloatEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) - }, + ), ), - "ContentDictIntBoolEntry": _reflection.GeneratedProtocolMessageType( + ContentDictIntBoolEntry=_reflection.GeneratedProtocolMessageType( "ContentDictIntBoolEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) - }, + ), ), - "ContentDictIntStrEntry": _reflection.GeneratedProtocolMessageType( + ContentDictIntStrEntry=_reflection.GeneratedProtocolMessageType( "ContentDictIntStrEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) - }, + ), ), - "ContentDictBoolBytesEntry": _reflection.GeneratedProtocolMessageType( + ContentDictBoolBytesEntry=_reflection.GeneratedProtocolMessageType( "ContentDictBoolBytesEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) - }, + ), ), - "ContentDictBoolIntEntry": _reflection.GeneratedProtocolMessageType( + ContentDictBoolIntEntry=_reflection.GeneratedProtocolMessageType( "ContentDictBoolIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) - }, + ), ), - "ContentDictBoolFloatEntry": _reflection.GeneratedProtocolMessageType( + ContentDictBoolFloatEntry=_reflection.GeneratedProtocolMessageType( "ContentDictBoolFloatEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) - }, + ), ), - "ContentDictBoolBoolEntry": _reflection.GeneratedProtocolMessageType( + ContentDictBoolBoolEntry=_reflection.GeneratedProtocolMessageType( "ContentDictBoolBoolEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) - }, + ), ), - "ContentDictBoolStrEntry": _reflection.GeneratedProtocolMessageType( + ContentDictBoolStrEntry=_reflection.GeneratedProtocolMessageType( "ContentDictBoolStrEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) - }, + ), ), - "ContentDictStrBytesEntry": _reflection.GeneratedProtocolMessageType( + ContentDictStrBytesEntry=_reflection.GeneratedProtocolMessageType( "ContentDictStrBytesEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) - }, + ), ), - "ContentDictStrIntEntry": _reflection.GeneratedProtocolMessageType( + ContentDictStrIntEntry=_reflection.GeneratedProtocolMessageType( "ContentDictStrIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) - }, + ), ), - "ContentDictStrFloatEntry": _reflection.GeneratedProtocolMessageType( + ContentDictStrFloatEntry=_reflection.GeneratedProtocolMessageType( "ContentDictStrFloatEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) - }, + ), ), - "ContentDictStrBoolEntry": _reflection.GeneratedProtocolMessageType( + ContentDictStrBoolEntry=_reflection.GeneratedProtocolMessageType( "ContentDictStrBoolEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) - }, + ), ), - "ContentDictStrStrEntry": _reflection.GeneratedProtocolMessageType( + ContentDictStrStrEntry=_reflection.GeneratedProtocolMessageType( "ContentDictStrStrEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) - }, + ), ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, - "__module__": "t_protocol_pb2" + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative) - }, + ), ), - "Performative_Mt_Performative": _reflection.GeneratedProtocolMessageType( + Performative_Mt_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Mt_Performative", (_message.Message,), - { - "ContentUnion1TypeDictOfStrIntEntry": _reflection.GeneratedProtocolMessageType( + dict( + ContentUnion1TypeDictOfStrIntEntry=_reflection.GeneratedProtocolMessageType( "ContentUnion1TypeDictOfStrIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) - }, + ), ), - "ContentUnion2TypeDictOfStrIntEntry": _reflection.GeneratedProtocolMessageType( + ContentUnion2TypeDictOfStrIntEntry=_reflection.GeneratedProtocolMessageType( "ContentUnion2TypeDictOfStrIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) - }, + ), ), - "ContentUnion2TypeDictOfIntFloatEntry": _reflection.GeneratedProtocolMessageType( + ContentUnion2TypeDictOfIntFloatEntry=_reflection.GeneratedProtocolMessageType( "ContentUnion2TypeDictOfIntFloatEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) - }, + ), ), - "ContentUnion2TypeDictOfBoolBytesEntry": _reflection.GeneratedProtocolMessageType( + ContentUnion2TypeDictOfBoolBytesEntry=_reflection.GeneratedProtocolMessageType( "ContentUnion2TypeDictOfBoolBytesEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) - }, + ), ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, - "__module__": "t_protocol_pb2" + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative) - }, + ), ), - "Performative_O_Performative": _reflection.GeneratedProtocolMessageType( + Performative_O_Performative=_reflection.GeneratedProtocolMessageType( "Performative_O_Performative", (_message.Message,), - { - "ContentODictStrIntEntry": _reflection.GeneratedProtocolMessageType( + dict( + ContentODictStrIntEntry=_reflection.GeneratedProtocolMessageType( "ContentODictStrIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry) - }, + ), ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE, - "__module__": "t_protocol_pb2" + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative) - }, + ), ), - "Performative_Empty_Contents_Performative": _reflection.GeneratedProtocolMessageType( + Performative_Empty_Contents_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Empty_Contents_Performative", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, - "__module__": "t_protocol_pb2" + dict( + DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Empty_Contents_Performative) - }, + ), ), - "DESCRIPTOR": _TPROTOCOLMESSAGE, - "__module__": "t_protocol_pb2" + DESCRIPTOR=_TPROTOCOLMESSAGE, + __module__="t_protocol_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage) - }, + ), ) _sym_db.RegisterMessage(TProtocolMessage) _sym_db.RegisterMessage(TProtocolMessage.DataModel) diff --git a/tests/data/generator/t_protocol_no_ct/protocol.yaml b/tests/data/generator/t_protocol_no_ct/protocol.yaml index 9a52b7bdc0..b00452fdca 100644 --- a/tests/data/generator/t_protocol_no_ct/protocol.yaml +++ b/tests/data/generator/t_protocol_no_ct/protocol.yaml @@ -9,9 +9,9 @@ fingerprint: __init__.py: QmRGHGRoZHGCXQ29v3q93Nt6J5TuhggYvUvZoQfrM6c3yp dialogues.py: QmUjFTMYk2C69dcYfsKorTQWJbaUGEz8orCQnkZtFbR6Je message.py: Qma11dAGwWr3oYSWAmRrwLJj9mLvyLVD66svTyHwU3HVNB - serialization.py: Qmc3tJ5vk1AbtkF5BrPUeuyrnvVUTrfuUMF9MgDfkiiMkB - t_protocol_no_ct.proto: QmeZWVLhb6EUGr5AgVwgf2YTEZTSuCskpmxCwAE3sDU9sY - t_protocol_no_ct_pb2.py: QmYtjyYTv1fQrwTS2x5ZkrNB8bpgH2vpPUJsUV29B7E4d9 + serialization.py: QmdxfZeYT1zo1oUgomEJwuZ6ttFodRXdYhaWBfzFhMrgBN + t_protocol_no_ct.proto: QmcQtSHEVK25h5s1MN5RkCrRGhHqbRmMvTjhgZNMk9tdUe + t_protocol_no_ct_pb2.py: QmfU5AaVARTUi8gmhShNZk23LcA6Qp2AY2ysy39LM32eLq fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/generator/t_protocol_no_ct/serialization.py b/tests/data/generator/t_protocol_no_ct/serialization.py index bf7b3face3..b2c5289df3 100644 --- a/tests/data/generator/t_protocol_no_ct/serialization.py +++ b/tests/data/generator/t_protocol_no_ct/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer @@ -40,12 +41,15 @@ def encode(msg: Message) -> bytes: :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() - t_protocol_no_ct_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - t_protocol_no_ct_msg.dialogue_starter_reference = dialogue_reference[0] - t_protocol_no_ct_msg.dialogue_responder_reference = dialogue_reference[1] - t_protocol_no_ct_msg.target = msg.target + 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: @@ -258,8 +262,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - t_protocol_no_ct_bytes = t_protocol_no_ct_msg.SerializeToString() - return t_protocol_no_ct_bytes + dialogue_message_pb.content.Pack(t_protocol_no_ct_msg) + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -269,15 +276,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'TProtocolNoCt' message. """ + message_pb = ProtobufMessage() t_protocol_no_ct_pb = t_protocol_no_ct_pb2.TProtocolNoCtMessage() - t_protocol_no_ct_pb.ParseFromString(obj) - message_id = t_protocol_no_ct_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - t_protocol_no_ct_pb.dialogue_starter_reference, - t_protocol_no_ct_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = t_protocol_no_ct_pb.target + target = message_pb.dialogue_message.target + message_pb.dialogue_message.content.Unpack(t_protocol_no_ct_pb) performative = t_protocol_no_ct_pb.WhichOneof("performative") performative_id = TProtocolNoCtMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto index c9a4b9a145..a0e83c267f 100644 --- a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto +++ b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto @@ -78,11 +78,6 @@ message TProtocolNoCtMessage{ message Performative_Empty_Contents_Performative{} - // Standard TProtocolNoCtMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Performative_Empty_Contents_Performative performative_empty_contents = 5; Performative_Mt_Performative performative_mt = 6; diff --git a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py index c018654cf4..7f229bd662 100644 --- a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py +++ b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: t_protocol_no_ct.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -17,7 +19,9 @@ package="fetch.aea.TProtocolNoCt", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\x16t_protocol_no_ct.proto\x12\x17\x66\x65tch.aea.TProtocolNoCt"\xef/\n\x14TProtocolNoCtMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12}\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32V.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12\x65\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32J.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12\x63\n\x0eperformative_o\x18\x07 \x01(\x0b\x32I.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12g\n\x10performative_pct\x18\x08 \x01(\x0b\x32K.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12g\n\x10performative_pmt\x18\t \x01(\x0b\x32K.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12\x65\n\x0fperformative_pt\x18\n \x01(\x0b\x32J.fetch.aea.TProtocolNoCt.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(\x05\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(\x05\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(\x05\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\xee\x16\n\x1dPerformative_Pmt_Performative\x12\x84\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x80\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x84\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x82\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x80\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x86\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32\x65.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x82\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x86\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32\x65.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x84\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x82\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x84\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x80\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x84\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x82\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x80\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xc0\x0b\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x02 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x03 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x05 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x06 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x07 \x03(\x08\x12\x9b\x01\n$content_union_1_type_dict_of_str_int\x18\x08 \x03(\x0b\x32m.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\t \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\n \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0b \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\x0c \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\r \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0e \x03(\x0c\x12\x9b\x01\n$content_union_2_type_dict_of_str_int\x18\x0f \x03(\x0b\x32m.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x9f\x01\n&content_union_2_type_dict_of_int_float\x18\x10 \x03(\x0b\x32o.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xa1\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x11 \x03(\x0b\x32p.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\xba\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(\x05\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\x81\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32\x61.fetch.aea.TProtocolNoCt.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\x16t_protocol_no_ct.proto\x12\x17\x66\x65tch.aea.TProtocolNoCt"\x81/\n\x14TProtocolNoCtMessage\x12}\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32V.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12\x65\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32J.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12\x63\n\x0eperformative_o\x18\x07 \x01(\x0b\x32I.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12g\n\x10performative_pct\x18\x08 \x01(\x0b\x32K.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12g\n\x10performative_pmt\x18\t \x01(\x0b\x32K.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12\x65\n\x0fperformative_pt\x18\n \x01(\x0b\x32J.fetch.aea.TProtocolNoCt.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(\x05\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(\x05\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(\x05\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\xee\x16\n\x1dPerformative_Pmt_Performative\x12\x84\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x80\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x84\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x82\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x80\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x86\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32\x65.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x82\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x86\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32\x65.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x84\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x82\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x84\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x80\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x84\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x82\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x80\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xc0\x0b\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x02 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x03 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x05 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x06 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x07 \x03(\x08\x12\x9b\x01\n$content_union_1_type_dict_of_str_int\x18\x08 \x03(\x0b\x32m.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\t \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\n \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0b \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\x0c \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\r \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0e \x03(\x0c\x12\x9b\x01\n$content_union_2_type_dict_of_str_int\x18\x0f \x03(\x0b\x32m.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x9f\x01\n&content_union_2_type_dict_of_int_float\x18\x10 \x03(\x0b\x32o.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xa1\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x11 \x03(\x0b\x32p.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\xba\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(\x05\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\x81\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32\x61.fetch.aea.TProtocolNoCt.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + ), ) @@ -37,7 +41,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -109,7 +113,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -127,8 +131,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=831, - serialized_end=971, + serialized_start=721, + serialized_end=861, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = _descriptor.Descriptor( @@ -327,8 +331,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=974, - serialized_end=1270, + serialized_start=864, + serialized_end=1160, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = _descriptor.Descriptor( @@ -365,7 +369,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -378,13 +382,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3311, - serialized_end=3369, + serialized_start=3201, + serialized_end=3259, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = _descriptor.Descriptor( @@ -434,13 +438,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3371, - serialized_end=3427, + serialized_start=3261, + serialized_end=3317, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = _descriptor.Descriptor( @@ -490,13 +494,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3429, - serialized_end=3487, + serialized_start=3319, + serialized_end=3377, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = _descriptor.Descriptor( @@ -546,13 +550,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3489, - serialized_end=3546, + serialized_start=3379, + serialized_end=3436, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = _descriptor.Descriptor( @@ -589,7 +593,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -602,13 +606,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3548, - serialized_end=3604, + serialized_start=3438, + serialized_end=3494, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = _descriptor.Descriptor( @@ -645,7 +649,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -658,13 +662,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3606, - serialized_end=3665, + serialized_start=3496, + serialized_end=3555, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = _descriptor.Descriptor( @@ -714,13 +718,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3667, - serialized_end=3724, + serialized_start=3557, + serialized_end=3614, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = _descriptor.Descriptor( @@ -770,13 +774,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3726, - serialized_end=3785, + serialized_start=3616, + serialized_end=3675, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = _descriptor.Descriptor( @@ -826,13 +830,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3787, - serialized_end=3845, + serialized_start=3677, + serialized_end=3735, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = _descriptor.Descriptor( @@ -869,7 +873,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -882,13 +886,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3847, - serialized_end=3904, + serialized_start=3737, + serialized_end=3794, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = _descriptor.Descriptor( @@ -907,7 +911,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -925,7 +929,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -938,13 +942,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3906, - serialized_end=3964, + serialized_start=3796, + serialized_end=3854, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = _descriptor.Descriptor( @@ -963,7 +967,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -994,13 +998,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3966, - serialized_end=4022, + serialized_start=3856, + serialized_end=3912, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = _descriptor.Descriptor( @@ -1019,7 +1023,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1050,13 +1054,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4024, - serialized_end=4082, + serialized_start=3914, + serialized_end=3972, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = _descriptor.Descriptor( @@ -1075,7 +1079,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1106,13 +1110,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4084, - serialized_end=4141, + serialized_start=3974, + serialized_end=4031, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = _descriptor.Descriptor( @@ -1131,7 +1135,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1149,7 +1153,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1162,13 +1166,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4143, - serialized_end=4199, + serialized_start=4033, + serialized_end=4089, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = _descriptor.Descriptor( @@ -1473,8 +1477,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1273, - serialized_end=4199, + serialized_start=1163, + serialized_end=4089, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( @@ -1493,7 +1497,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1524,13 +1528,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5391, - serialized_end=5459, + serialized_start=5281, + serialized_end=5349, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( @@ -1549,7 +1553,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1580,13 +1584,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5461, - serialized_end=5529, + serialized_start=5351, + serialized_end=5419, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _descriptor.Descriptor( @@ -1636,13 +1640,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5531, - serialized_end=5601, + serialized_start=5421, + serialized_end=5491, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _descriptor.Descriptor( @@ -1679,7 +1683,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -1692,13 +1696,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5603, - serialized_end=5674, + serialized_start=5493, + serialized_end=5564, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _descriptor.Descriptor( @@ -1717,7 +1721,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -1789,7 +1793,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -2028,8 +2032,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4202, - serialized_end=5674, + serialized_start=4092, + serialized_end=5564, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = _descriptor.Descriptor( @@ -2048,7 +2052,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -2079,13 +2083,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6062, - serialized_end=6119, + serialized_start=5952, + serialized_end=6009, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _descriptor.Descriptor( @@ -2250,8 +2254,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5677, - serialized_end=6119, + serialized_start=5567, + serialized_end=6009, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = _descriptor.Descriptor( @@ -2269,8 +2273,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6121, - serialized_end=6163, + serialized_start=6011, + serialized_end=6053, ) _TPROTOCOLNOCTMESSAGE = _descriptor.Descriptor( @@ -2280,82 +2284,10 @@ file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="performative_empty_contents", full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_empty_contents", - index=4, + index=0, number=5, type=11, cpp_type=10, @@ -2373,7 +2305,7 @@ _descriptor.FieldDescriptor( name="performative_mt", full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_mt", - index=5, + index=1, number=6, type=11, cpp_type=10, @@ -2391,7 +2323,7 @@ _descriptor.FieldDescriptor( name="performative_o", full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_o", - index=6, + index=2, number=7, type=11, cpp_type=10, @@ -2409,7 +2341,7 @@ _descriptor.FieldDescriptor( name="performative_pct", full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_pct", - index=7, + index=3, number=8, type=11, cpp_type=10, @@ -2427,7 +2359,7 @@ _descriptor.FieldDescriptor( name="performative_pmt", full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_pmt", - index=8, + index=4, number=9, type=11, cpp_type=10, @@ -2445,7 +2377,7 @@ _descriptor.FieldDescriptor( name="performative_pt", full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_pt", - index=9, + index=5, number=10, type=11, cpp_type=10, @@ -2485,7 +2417,7 @@ ), ], serialized_start=52, - serialized_end=6179, + serialized_end=6069, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE.containing_type = ( @@ -2718,245 +2650,245 @@ TProtocolNoCtMessage = _reflection.GeneratedProtocolMessageType( "TProtocolNoCtMessage", (_message.Message,), - { - "Performative_Pt_Performative": _reflection.GeneratedProtocolMessageType( + dict( + Performative_Pt_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Pt_Performative", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pt_Performative) - }, + ), ), - "Performative_Pct_Performative": _reflection.GeneratedProtocolMessageType( + Performative_Pct_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Pct_Performative", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative) - }, + ), ), - "Performative_Pmt_Performative": _reflection.GeneratedProtocolMessageType( + Performative_Pmt_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Pmt_Performative", (_message.Message,), - { - "ContentDictIntBytesEntry": _reflection.GeneratedProtocolMessageType( + dict( + ContentDictIntBytesEntry=_reflection.GeneratedProtocolMessageType( "ContentDictIntBytesEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) - }, + ), ), - "ContentDictIntIntEntry": _reflection.GeneratedProtocolMessageType( + ContentDictIntIntEntry=_reflection.GeneratedProtocolMessageType( "ContentDictIntIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) - }, + ), ), - "ContentDictIntFloatEntry": _reflection.GeneratedProtocolMessageType( + ContentDictIntFloatEntry=_reflection.GeneratedProtocolMessageType( "ContentDictIntFloatEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) - }, + ), ), - "ContentDictIntBoolEntry": _reflection.GeneratedProtocolMessageType( + ContentDictIntBoolEntry=_reflection.GeneratedProtocolMessageType( "ContentDictIntBoolEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) - }, + ), ), - "ContentDictIntStrEntry": _reflection.GeneratedProtocolMessageType( + ContentDictIntStrEntry=_reflection.GeneratedProtocolMessageType( "ContentDictIntStrEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) - }, + ), ), - "ContentDictBoolBytesEntry": _reflection.GeneratedProtocolMessageType( + ContentDictBoolBytesEntry=_reflection.GeneratedProtocolMessageType( "ContentDictBoolBytesEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) - }, + ), ), - "ContentDictBoolIntEntry": _reflection.GeneratedProtocolMessageType( + ContentDictBoolIntEntry=_reflection.GeneratedProtocolMessageType( "ContentDictBoolIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) - }, + ), ), - "ContentDictBoolFloatEntry": _reflection.GeneratedProtocolMessageType( + ContentDictBoolFloatEntry=_reflection.GeneratedProtocolMessageType( "ContentDictBoolFloatEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) - }, + ), ), - "ContentDictBoolBoolEntry": _reflection.GeneratedProtocolMessageType( + ContentDictBoolBoolEntry=_reflection.GeneratedProtocolMessageType( "ContentDictBoolBoolEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) - }, + ), ), - "ContentDictBoolStrEntry": _reflection.GeneratedProtocolMessageType( + ContentDictBoolStrEntry=_reflection.GeneratedProtocolMessageType( "ContentDictBoolStrEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) - }, + ), ), - "ContentDictStrBytesEntry": _reflection.GeneratedProtocolMessageType( + ContentDictStrBytesEntry=_reflection.GeneratedProtocolMessageType( "ContentDictStrBytesEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) - }, + ), ), - "ContentDictStrIntEntry": _reflection.GeneratedProtocolMessageType( + ContentDictStrIntEntry=_reflection.GeneratedProtocolMessageType( "ContentDictStrIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) - }, + ), ), - "ContentDictStrFloatEntry": _reflection.GeneratedProtocolMessageType( + ContentDictStrFloatEntry=_reflection.GeneratedProtocolMessageType( "ContentDictStrFloatEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) - }, + ), ), - "ContentDictStrBoolEntry": _reflection.GeneratedProtocolMessageType( + ContentDictStrBoolEntry=_reflection.GeneratedProtocolMessageType( "ContentDictStrBoolEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) - }, + ), ), - "ContentDictStrStrEntry": _reflection.GeneratedProtocolMessageType( + ContentDictStrStrEntry=_reflection.GeneratedProtocolMessageType( "ContentDictStrStrEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) - }, + ), ), - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative) - }, + ), ), - "Performative_Mt_Performative": _reflection.GeneratedProtocolMessageType( + Performative_Mt_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Mt_Performative", (_message.Message,), - { - "ContentUnion1TypeDictOfStrIntEntry": _reflection.GeneratedProtocolMessageType( + dict( + ContentUnion1TypeDictOfStrIntEntry=_reflection.GeneratedProtocolMessageType( "ContentUnion1TypeDictOfStrIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) - }, + ), ), - "ContentUnion2TypeDictOfStrIntEntry": _reflection.GeneratedProtocolMessageType( + ContentUnion2TypeDictOfStrIntEntry=_reflection.GeneratedProtocolMessageType( "ContentUnion2TypeDictOfStrIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) - }, + ), ), - "ContentUnion2TypeDictOfIntFloatEntry": _reflection.GeneratedProtocolMessageType( + ContentUnion2TypeDictOfIntFloatEntry=_reflection.GeneratedProtocolMessageType( "ContentUnion2TypeDictOfIntFloatEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) - }, + ), ), - "ContentUnion2TypeDictOfBoolBytesEntry": _reflection.GeneratedProtocolMessageType( + ContentUnion2TypeDictOfBoolBytesEntry=_reflection.GeneratedProtocolMessageType( "ContentUnion2TypeDictOfBoolBytesEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) - }, + ), ), - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative) - }, + ), ), - "Performative_O_Performative": _reflection.GeneratedProtocolMessageType( + Performative_O_Performative=_reflection.GeneratedProtocolMessageType( "Performative_O_Performative", (_message.Message,), - { - "ContentODictStrIntEntry": _reflection.GeneratedProtocolMessageType( + dict( + ContentODictStrIntEntry=_reflection.GeneratedProtocolMessageType( "ContentODictStrIntEntry", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry) - }, + ), ), - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative) - }, + ), ), - "Performative_Empty_Contents_Performative": _reflection.GeneratedProtocolMessageType( + Performative_Empty_Contents_Performative=_reflection.GeneratedProtocolMessageType( "Performative_Empty_Contents_Performative", (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" + dict( + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Empty_Contents_Performative) - }, + ), ), - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE, - "__module__": "t_protocol_no_ct_pb2" + DESCRIPTOR=_TPROTOCOLNOCTMESSAGE, + __module__="t_protocol_no_ct_pb2" # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage) - }, + ), ) _sym_db.RegisterMessage(TProtocolNoCtMessage) _sym_db.RegisterMessage(TProtocolNoCtMessage.Performative_Pt_Performative) diff --git a/tests/test_protocols/test_generator/test_generator.py b/tests/test_protocols/test_generator/test_generator.py index 19d7a189b9..c154f0f6d0 100644 --- a/tests/test_protocols/test_generator/test_generator.py +++ b/tests/test_protocols/test_generator/test_generator.py @@ -1210,11 +1210,6 @@ def test_protocol_buffer_schema_str(self): " message SomeCustomType{\n" " bytes description = 1; }\n\n\n" " // Performatives and contents\n\n" - " // Standard SomeNameMessage fields\n" - " int32 message_id = 1;\n" - " string dialogue_starter_reference = 2;\n" - " string dialogue_responder_reference = 3;\n" - " int32 target = 4;\n" " oneof performative{\n" " }\n" "}\n" From 113547dacded037b05ba59fcb4a694d3a70ed731 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Tue, 1 Sep 2020 11:18:48 +0200 Subject: [PATCH 006/155] update stub connection with new encoding --- aea/connections/stub/connection.py | 3 +-- aea/connections/stub/connection.yaml | 2 +- aea/test_tools/generic.py | 4 ++-- packages/hashes.csv | 2 +- tests/test_connections/test_stub.py | 4 ++-- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/aea/connections/stub/connection.py b/aea/connections/stub/connection.py index a80267f0c9..788db20e29 100644 --- a/aea/connections/stub/connection.py +++ b/aea/connections/stub/connection.py @@ -19,7 +19,6 @@ """This module contains the stub connection.""" import asyncio -import codecs import logging import re from asyncio import CancelledError @@ -77,7 +76,7 @@ def _decode(e: bytes, separator: bytes = SEPARATOR): # protobuf messages cannot be delimited as they can contain an arbitrary byte sequence; however # we know everything remaining constitutes the protobuf message. message = SEPARATOR.join(split[3:-1]) - message = codecs.decode(message, "unicode-escape").encode("utf-8") + # message = codecs.decode(message, "unicode-escape").encode("utf-8") # noqa: E800 return Envelope(to=to, sender=sender, protocol_id=protocol_id, message=message) diff --git a/aea/connections/stub/connection.yaml b/aea/connections/stub/connection.yaml index 9a3180ab88..e61d77d891 100644 --- a/aea/connections/stub/connection.yaml +++ b/aea/connections/stub/connection.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.5.0, <0.6.0' fingerprint: __init__.py: QmWwepN9Fy9gHAp39vUGFSLdnB9JZjdyE3STnbowSUhJkC - connection.py: QmTSESVFvsDc9iq2QM3YdZju3yHqTA3wHbLkAzHXEFY17Z + connection.py: QmSZTPuYsQk3bfCspG4JBPGMSBuwroDjbe7jLPsgBrDWP7 readme.md: QmXSAtxSY7C2YkvUxeVnpqCJY9uJYZxZBmuUcE4zjFXcXz fingerprint_ignore_patterns: [] protocols: [] diff --git a/aea/test_tools/generic.py b/aea/test_tools/generic.py index 74743bdd15..33f741a3ee 100644 --- a/aea/test_tools/generic.py +++ b/aea/test_tools/generic.py @@ -55,8 +55,8 @@ def read_envelope_from_file(file_path: str): with open(Path(file_path), "rb+") as f: lines.extend(f.readlines()) - enforce(len(lines) == 2, "Did not find two lines.") - line = lines[0] + lines[1] + enforce(len(lines) == 3, "Did not find three lines.") + line = lines[0] + lines[1] + lines[2] to_b, sender_b, protocol_id_b, message, end = line.strip().split(b",", maxsplit=4) to = to_b.decode("utf-8") sender = sender_b.decode("utf-8") diff --git a/packages/hashes.csv b/packages/hashes.csv index adb11197f6..405d4425e6 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -29,7 +29,7 @@ fetchai/connections/p2p_libp2p_client,QmdYNnXerZZWNehprYrErQSFm2KL5GJfNJ9fZgpEhQ fetchai/connections/p2p_stub,QmYDtzju1Ytx5Kyujk85H1gBmzc4eTh3aUYGmH3AQ3wVqE fetchai/connections/scaffold,QmcLGRxT2HmPvxM29sGDNxy7tB5X8JbwuKWfVWJvYofTWT fetchai/connections/soef,Qmf1B15eVrERmYB5mUEDWmDB5orKfJfoGmgXWyNvFcDEee -fetchai/connections/stub,QmeNb7frSsY4kDv1VD9bmpdDP7Ss4WWVqUdtTvWSwmdNB3 +fetchai/connections/stub,QmU3TWjv9k97SKP9Si7ixWyeHbxUdC46fHDHohFQiZfHYE fetchai/connections/tcp,QmYGgAm14yAnrQjpH7KVsGw8nAnhjCyZCozhqDKs7pt819 fetchai/connections/webhook,QmQJHzHQBF3USzHNiZ35thj5RNXYuFcQ78yxr3TS9gkQJo fetchai/contracts/erc1155,QmRPpD2RSxgZfhtuiv4vRp6oP1uZ4nsECKrCkwmyUgzUpq diff --git a/tests/test_connections/test_stub.py b/tests/test_connections/test_stub.py index 20a7c2339d..52e27758c8 100644 --- a/tests/test_connections/test_stub.py +++ b/tests/test_connections/test_stub.py @@ -248,8 +248,8 @@ def test_send_message(self): with open(self.output_file_path, "rb+") as f: lines = f.readlines() - assert len(lines) == 2 - line = lines[0] + lines[1] + assert len(lines) == 3 + line = lines[0] + lines[1] + lines[2] to, sender, protocol_id, message, end = line.strip().split( "{}".format(SEPARATOR).encode("utf-8"), maxsplit=4 ) From 67567e073d109ce0a7fe8d6ea4f8c9233b66a05b Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Tue, 1 Sep 2020 17:01:14 +0200 Subject: [PATCH 007/155] fix programmatic AEA test. --- docs/build-aea-programmatically.md | 4 ++-- .../test_build_aea_programmatically/programmatic_aea.py | 2 +- .../test_programmatic_aea.py | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/build-aea-programmatically.md b/docs/build-aea-programmatically.md index 91dec3e9ee..2a75b6bebf 100644 --- a/docs/build-aea-programmatically.md +++ b/docs/build-aea-programmatically.md @@ -121,7 +121,7 @@ We run the AEA from a different thread so that we can still use the main thread 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:0.5.0,\x08\x01\x12\x011*\x07\n\x05hello," + message_text = b"my_aea,other_agent,fetchai/default:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) print(b"input message: " + message_text) @@ -236,7 +236,7 @@ def run(): 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:0.5.0,\x08\x01\x12\x011*\x07\n\x05hello," + message_text = b"my_aea,other_agent,fetchai/default:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) print(b"input message: " + message_text) 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 68363192ad..85688cd93b 100644 --- a/tests/test_docs/test_build_aea_programmatically/programmatic_aea.py +++ b/tests/test_docs/test_build_aea_programmatically/programmatic_aea.py @@ -97,7 +97,7 @@ def handle(self, message: Message) -> None: 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:0.5.0,\x08\x01\x12\x011*\x07\n\x05hello," + message_text = b"my_aea,other_agent,fetchai/default:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) print(b"input message: " + message_text) 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 cb307c49d2..2a09bc65fd 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 @@ -60,11 +60,13 @@ def test_run_agent(self): assert os.path.exists(Path(self.t, DEFAULT_PRIVATE_KEY_FILE)) message_text_1 = b"other_agent,my_aea,fetchai/default:0.5.0," - message_text_2 = b"\x01*\x07\n\x05hello," + message_text_2 = b"type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello" + path = os.path.join(self.t, "output_file") with open(path, "rb") as file: msg = file.read() - assert message_text_1 in msg and message_text_2 in msg + assert message_text_1 in msg + assert message_text_2 in msg def test_code_blocks_exist(self): """Test that all the code-blocks exist in the python file.""" From a57d2cb944f58a016ff91fe1cc33f56dd5d353a9 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Tue, 1 Sep 2020 17:20:37 +0200 Subject: [PATCH 008/155] fix agent vs aea tests --- docs/agent-vs-aea.md | 8 ++------ tests/test_docs/test_agent_vs_aea/agent_code_block.py | 4 +--- tests/test_docs/test_agent_vs_aea/test_agent_vs_aea.py | 4 +--- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/docs/agent-vs-aea.md b/docs/agent-vs-aea.md index 7ec078fb9a..8ccb2f760b 100644 --- a/docs/agent-vs-aea.md +++ b/docs/agent-vs-aea.md @@ -117,9 +117,7 @@ We run the agent from a different thread so that we can still use the main threa 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:0.5.0,\x08\x01*\x07\n\x05hello," - ) + message_text = b"my_agent,other_agent,fetchai/default:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) @@ -233,9 +231,7 @@ def run(): 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:0.5.0,\x08\x01*\x07\n\x05hello," - ) + message_text = b"my_agent,other_agent,fetchai/default:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) 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 b449261244..6a466c72a1 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 @@ -101,9 +101,7 @@ def run(): 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:0.5.0,\x08\x01*\x07\n\x05hello," - ) + message_text = b"my_agent,other_agent,fetchai/default:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) 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 9fe0f5dfad..ca8dcbd075 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 @@ -59,9 +59,7 @@ def test_run_agent(self): run() assert os.path.exists(Path(self.t, "input_file")) - message_text = ( - b"other_agent,my_agent,fetchai/default:0.5.0,\x08\x01*\x07\n\x05hello," - ) + message_text = b"other_agent,my_agent,fetchai/default:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," path = os.path.join(self.t, "output_file") with open(path, "rb") as file: msg = file.read() From 13cb6b397e9701571ff19f28b661b0a9f7421232 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Tue, 1 Sep 2020 18:43:40 +0200 Subject: [PATCH 009/155] change proto package name in protocol generator --- aea/protocols/default/default.proto | 2 +- aea/protocols/default/default_pb2.py | 70 +++++------ aea/protocols/generator/base.py | 4 +- scripts/generate_all_protocols.py | 171 +++++++++++++++++++++++++++ 4 files changed, 209 insertions(+), 38 deletions(-) create mode 100755 scripts/generate_all_protocols.py diff --git a/aea/protocols/default/default.proto b/aea/protocols/default/default.proto index e205482a5f..5d21b1d1bd 100644 --- a/aea/protocols/default/default.proto +++ b/aea/protocols/default/default.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.Default; +package fetchai.aea.fetchai.default; message DefaultMessage{ diff --git a/aea/protocols/default/default_pb2.py b/aea/protocols/default/default_pb2.py index 532ee8b30e..c746bc5de1 100644 --- a/aea/protocols/default/default_pb2.py +++ b/aea/protocols/default/default_pb2.py @@ -16,18 +16,18 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="default.proto", - package="fetch.aea.Default", + package="fetchai.aea.fetchai.default", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\rdefault.proto\x12\x11\x66\x65tch.aea.Default"\xa9\x05\n\x0e\x44\x65\x66\x61ultMessage\x12\x45\n\x05\x62ytes\x18\x05 \x01(\x0b\x32\x34.fetch.aea.Default.DefaultMessage.Bytes_PerformativeH\x00\x12\x45\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x34.fetch.aea.Default.DefaultMessage.Error_PerformativeH\x00\x1a\xdb\x01\n\tErrorCode\x12M\n\nerror_code\x18\x01 \x01(\x0e\x32\x39.fetch.aea.Default.DefaultMessage.ErrorCode.ErrorCodeEnum"\x7f\n\rErrorCodeEnum\x12\x18\n\x14UNSUPPORTED_PROTOCOL\x10\x00\x12\x12\n\x0e\x44\x45\x43ODING_ERROR\x10\x01\x12\x13\n\x0fINVALID_MESSAGE\x10\x02\x12\x15\n\x11UNSUPPORTED_SKILL\x10\x03\x12\x14\n\x10INVALID_DIALOGUE\x10\x04\x1a%\n\x12\x42ytes_Performative\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x1a\xf3\x01\n\x12\x45rror_Performative\x12?\n\nerror_code\x18\x01 \x01(\x0b\x32+.fetch.aea.Default.DefaultMessage.ErrorCode\x12\x11\n\terror_msg\x18\x02 \x01(\t\x12W\n\nerror_data\x18\x03 \x03(\x0b\x32\x43.fetch.aea.Default.DefaultMessage.Error_Performative.ErrorDataEntry\x1a\x30\n\x0e\x45rrorDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' + '\n\rdefault.proto\x12\x1b\x66\x65tchai.aea.fetchai.default"\xdb\x05\n\x0e\x44\x65\x66\x61ultMessage\x12O\n\x05\x62ytes\x18\x05 \x01(\x0b\x32>.fetchai.aea.fetchai.default.DefaultMessage.Bytes_PerformativeH\x00\x12O\n\x05\x65rror\x18\x06 \x01(\x0b\x32>.fetchai.aea.fetchai.default.DefaultMessage.Error_PerformativeH\x00\x1a\xe5\x01\n\tErrorCode\x12W\n\nerror_code\x18\x01 \x01(\x0e\x32\x43.fetchai.aea.fetchai.default.DefaultMessage.ErrorCode.ErrorCodeEnum"\x7f\n\rErrorCodeEnum\x12\x18\n\x14UNSUPPORTED_PROTOCOL\x10\x00\x12\x12\n\x0e\x44\x45\x43ODING_ERROR\x10\x01\x12\x13\n\x0fINVALID_MESSAGE\x10\x02\x12\x15\n\x11UNSUPPORTED_SKILL\x10\x03\x12\x14\n\x10INVALID_DIALOGUE\x10\x04\x1a%\n\x12\x42ytes_Performative\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x1a\x87\x02\n\x12\x45rror_Performative\x12I\n\nerror_code\x18\x01 \x01(\x0b\x32\x35.fetchai.aea.fetchai.default.DefaultMessage.ErrorCode\x12\x11\n\terror_msg\x18\x02 \x01(\t\x12\x61\n\nerror_data\x18\x03 \x03(\x0b\x32M.fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry\x1a\x30\n\x0e\x45rrorDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' ), ) _DEFAULTMESSAGE_ERRORCODE_ERRORCODEENUM = _descriptor.EnumDescriptor( name="ErrorCodeEnum", - full_name="fetch.aea.Default.DefaultMessage.ErrorCode.ErrorCodeEnum", + full_name="fetchai.aea.fetchai.default.DefaultMessage.ErrorCode.ErrorCodeEnum", filename=None, file=DESCRIPTOR, values=[ @@ -65,22 +65,22 @@ ], containing_type=None, serialized_options=None, - serialized_start=290, - serialized_end=417, + serialized_start=330, + serialized_end=457, ) _sym_db.RegisterEnumDescriptor(_DEFAULTMESSAGE_ERRORCODE_ERRORCODEENUM) _DEFAULTMESSAGE_ERRORCODE = _descriptor.Descriptor( name="ErrorCode", - full_name="fetch.aea.Default.DefaultMessage.ErrorCode", + full_name="fetchai.aea.fetchai.default.DefaultMessage.ErrorCode", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetch.aea.Default.DefaultMessage.ErrorCode.error_code", + full_name="fetchai.aea.fetchai.default.DefaultMessage.ErrorCode.error_code", index=0, number=1, type=14, @@ -105,20 +105,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=198, - serialized_end=417, + serialized_start=228, + serialized_end=457, ) _DEFAULTMESSAGE_BYTES_PERFORMATIVE = _descriptor.Descriptor( name="Bytes_Performative", - full_name="fetch.aea.Default.DefaultMessage.Bytes_Performative", + full_name="fetchai.aea.fetchai.default.DefaultMessage.Bytes_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content", - full_name="fetch.aea.Default.DefaultMessage.Bytes_Performative.content", + full_name="fetchai.aea.fetchai.default.DefaultMessage.Bytes_Performative.content", index=0, number=1, type=12, @@ -143,20 +143,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=419, - serialized_end=456, + serialized_start=459, + serialized_end=496, ) _DEFAULTMESSAGE_ERROR_PERFORMATIVE_ERRORDATAENTRY = _descriptor.Descriptor( name="ErrorDataEntry", - full_name="fetch.aea.Default.DefaultMessage.Error_Performative.ErrorDataEntry", + full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Default.DefaultMessage.Error_Performative.ErrorDataEntry.key", + full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry.key", index=0, number=1, type=9, @@ -174,7 +174,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Default.DefaultMessage.Error_Performative.ErrorDataEntry.value", + full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry.value", index=1, number=2, type=12, @@ -199,20 +199,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=654, - serialized_end=702, + serialized_start=714, + serialized_end=762, ) _DEFAULTMESSAGE_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Error_Performative", - full_name="fetch.aea.Default.DefaultMessage.Error_Performative", + full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetch.aea.Default.DefaultMessage.Error_Performative.error_code", + full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.error_code", index=0, number=1, type=11, @@ -230,7 +230,7 @@ ), _descriptor.FieldDescriptor( name="error_msg", - full_name="fetch.aea.Default.DefaultMessage.Error_Performative.error_msg", + full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.error_msg", index=1, number=2, type=9, @@ -248,7 +248,7 @@ ), _descriptor.FieldDescriptor( name="error_data", - full_name="fetch.aea.Default.DefaultMessage.Error_Performative.error_data", + full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.error_data", index=2, number=3, type=11, @@ -273,20 +273,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=459, - serialized_end=702, + serialized_start=499, + serialized_end=762, ) _DEFAULTMESSAGE = _descriptor.Descriptor( name="DefaultMessage", - full_name="fetch.aea.Default.DefaultMessage", + full_name="fetchai.aea.fetchai.default.DefaultMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="bytes", - full_name="fetch.aea.Default.DefaultMessage.bytes", + full_name="fetchai.aea.fetchai.default.DefaultMessage.bytes", index=0, number=5, type=11, @@ -304,7 +304,7 @@ ), _descriptor.FieldDescriptor( name="error", - full_name="fetch.aea.Default.DefaultMessage.error", + full_name="fetchai.aea.fetchai.default.DefaultMessage.error", index=1, number=6, type=11, @@ -335,14 +335,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.Default.DefaultMessage.performative", + full_name="fetchai.aea.fetchai.default.DefaultMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=37, - serialized_end=718, + serialized_start=47, + serialized_end=778, ) _DEFAULTMESSAGE_ERRORCODE.fields_by_name[ @@ -392,7 +392,7 @@ dict( DESCRIPTOR=_DEFAULTMESSAGE_ERRORCODE, __module__="default_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Default.DefaultMessage.ErrorCode) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.default.DefaultMessage.ErrorCode) ), ), Bytes_Performative=_reflection.GeneratedProtocolMessageType( @@ -401,7 +401,7 @@ dict( DESCRIPTOR=_DEFAULTMESSAGE_BYTES_PERFORMATIVE, __module__="default_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Default.DefaultMessage.Bytes_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.default.DefaultMessage.Bytes_Performative) ), ), Error_Performative=_reflection.GeneratedProtocolMessageType( @@ -414,17 +414,17 @@ dict( DESCRIPTOR=_DEFAULTMESSAGE_ERROR_PERFORMATIVE_ERRORDATAENTRY, __module__="default_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Default.DefaultMessage.Error_Performative.ErrorDataEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry) ), ), DESCRIPTOR=_DEFAULTMESSAGE_ERROR_PERFORMATIVE, __module__="default_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Default.DefaultMessage.Error_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.default.DefaultMessage.Error_Performative) ), ), DESCRIPTOR=_DEFAULTMESSAGE, __module__="default_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Default.DefaultMessage) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.default.DefaultMessage) ), ) _sym_db.RegisterMessage(DefaultMessage) diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index 0181d68759..d8175c40e4 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -1757,8 +1757,8 @@ def _protocol_buffer_schema_str(self) -> str: # heading proto_buff_schema_str = self.indent + 'syntax = "proto3";\n\n' - proto_buff_schema_str += self.indent + "package fetch.aea.{};\n\n".format( - self.protocol_specification_in_camel_case + proto_buff_schema_str += self.indent + "package fetchai.aea.{}.{};\n\n".format( + self.protocol_specification.author, self.protocol_specification.name ) proto_buff_schema_str += self.indent + "message {}Message{{\n\n".format( self.protocol_specification_in_camel_case diff --git a/scripts/generate_all_protocols.py b/scripts/generate_all_protocols.py new file mode 100755 index 0000000000..2b459da0fb --- /dev/null +++ b/scripts/generate_all_protocols.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2019 Fetch.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 tool generates the API docs. +""" + +import shutil +import subprocess # nosec +import sys +from pathlib import Path + +DOCS_DIR = "docs/" +MODULES_TO_PATH = { + "aea.aea": "api/aea.md", + "aea.aea_builder": "api/aea_builder.md", + "aea.agent": "api/agent.md", + "aea.agent_loop": "api/agent_loop.md", + "aea.launcher": "api/launcher.md", + "aea.multiplexer": "api/multiplexer.md", + "aea.runner": "api/runner.md", + "aea.runtime": "api/runtime.md", + "aea.components.base": "api/components/base.md", + "aea.components.loader": "api/components/loader.md", + "aea.configurations.base": "api/configurations/base.md", + "aea.configurations.constants": "api/configurations/constants.md", + "aea.configurations.loader": "api/configurations/loader.md", + "aea.connections.base": "api/connections/base.md", + "aea.connections.stub.connection": "api/connections/stub/connection.md", + "aea.context.base": "api/context/base.md", + "aea.contracts.base": "api/contracts/base.md", + "aea.crypto.base": "api/crypto/base.md", + "aea.crypto.cosmos": "api/crypto/cosmos.md", + "aea.crypto.ethereum": "api/crypto/ethereum.md", + "aea.crypto.fetchai": "api/crypto/fetchai.md", + "aea.crypto.helpers": "api/crypto/helpers.md", + "aea.crypto.ledger_apis": "api/crypto/ledger_apis.md", + "aea.crypto.wallet": "api/crypto/wallet.md", + "aea.crypto.registries.base": "api/crypto/registries/base.md", + "aea.decision_maker.base": "api/decision_maker/base.md", + "aea.decision_maker.default": "api/decision_maker/default.md", + "aea.helpers.ipfs.base": "api/helpers/ipfs/base.md", + "aea.helpers.preference_representations.base": "api/helpers/preference_representations/base.md", + "aea.helpers.search.generic": "api/helpers/search/generic.md", + "aea.helpers.search.models": "api/helpers/search/models.md", + "aea.helpers.transaction.base": "api/helpers/transaction/base.md", + "aea.helpers.async_friendly_queue": "api/helpers/async_friendly_queue.md", + "aea.helpers.async_utils": "api/helpers/async_utils.md", + "aea.helpers.base": "api/helpers/base.md", + "aea.helpers.exception_policy": "api/helpers/exception_policy.md", + "aea.helpers.exec_timeout": "api/helpers/exec_timeout.md", + "aea.helpers.file_lock": "api/helpers/file_lock.md", + "aea.helpers.logging": "api/helpers/logging.md", + "aea.helpers.multiple_executor": "api/helpers/multiple_executor.md", + "aea.helpers.pipe": "api/helpers/pipe.md", + "aea.helpers.pypi": "api/helpers/pypi.md", + "aea.helpers.win32": "api/helpers/win32.md", + "aea.identity.base": "api/identity/base.md", + "aea.mail.base": "api/mail/base.md", + "aea.protocols.base": "api/protocols/base.md", + "aea.protocols.dialogue.base": "api/helpers/dialogue/base.md", + "aea.protocols.generator.base": "api/protocols/generator/base.md", + "aea.protocols.generator.common": "api/protocols/generator/common.md", + "aea.protocols.generator.extract_specification": "api/protocols/generator/extract_specification.md", + "aea.protocols.generator.validate": "api/protocols/generator/validate.md", + "aea.protocols.default.custom_types": "api/protocols/default/custom_types.md", + "aea.protocols.default.dialogues": "api/protocols/default/dialogues.md", + "aea.protocols.default.message": "api/protocols/default/message.md", + "aea.protocols.default.serialization": "api/protocols/default/serialization.md", + "aea.protocols.signing.custom_types": "api/protocols/signing/custom_types.md", + "aea.protocols.signing.dialogues": "api/protocols/signing/dialogues.md", + "aea.protocols.signing.message": "api/protocols/signing/message.md", + "aea.protocols.signing.serialization": "api/protocols/signing/serialization.md", + "aea.protocols.state_update.dialogues": "api/protocols/state_update/dialogues.md", + "aea.protocols.state_update.message": "api/protocols/state_update/message.md", + "aea.protocols.state_update.serialization": "api/protocols/state_update/serialization.md", + "aea.registries.base": "api/registries/base.md", + "aea.registries.filter": "api/registries/filter.md", + "aea.registries.resources": "api/registries/resources.md", + "aea.skills.base": "api/skills/base.md", + "aea.skills.behaviours": "api/skills/behaviours.md", + "aea.skills.tasks": "api/skills/tasks.md", + "aea.skills.error.handlers": "api/skills/error/handlers.md", + "aea.test_tools.generic": "api/test_tools/generic.md", + "aea.test_tools.test_cases": "api/helpers/test_cases.md", +} + + +def create_subdir(path) -> None: + """ + Create a subdirectory. + + :param path: the directory path + """ + directory = "/".join(path.split("/")[:-1]) + Path(directory).mkdir(parents=True, exist_ok=True) + + +def replace_underscores(text: str) -> str: + """ + Replace escaped underscores in a text. + + :return: the processed text + """ + text_a = text.replace("\\_\\_", "`__`") + text_b = text_a.replace("\\_", "`_`") + return text_b + + +def save_to_file(path: str, text: str) -> None: + """ + Save to a file path. + + :param path: the path + :param text: the text + :return: None + """ + with open(path, "w") as f: + f.write(text) + + +def generate_api_docs(): + """Generate the api docs.""" + for module, rel_path in MODULES_TO_PATH.items(): + path = DOCS_DIR + rel_path + create_subdir(path) + pydoc = subprocess.Popen( # nosec + ["pydoc-markdown", "-m", module, "-I", "."], stdout=subprocess.PIPE + ) + stdout, _ = pydoc.communicate() + pydoc.wait() + stdout_text = stdout.decode("utf-8") + text = replace_underscores(stdout_text) + save_to_file(path, text) + + +def install(package: str) -> int: + """ + Install a PyPI package by calling pip. + + :param package: the package name and version specifier. + :return: the return code. + """ + return subprocess.check_call( # nosec + [sys.executable, "-m", "pip", "install", package] + ) + + +if __name__ == "__main__": + res = shutil.which("pydoc-markdown") + if res is None: + install("pydoc-markdown==3.3.0") + sys.exit(1) + generate_api_docs() From c5abeadab0b6caf2cfbe605aad00a40a93bc4257 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Tue, 1 Sep 2020 18:51:40 +0200 Subject: [PATCH 010/155] update IPFS hashes for default protocol --- aea/protocols/default/protocol.yaml | 4 ++-- packages/hashes.csv | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aea/protocols/default/protocol.yaml b/aea/protocols/default/protocol.yaml index 420adfb7b5..9b90088ed4 100644 --- a/aea/protocols/default/protocol.yaml +++ b/aea/protocols/default/protocol.yaml @@ -9,8 +9,8 @@ fingerprint: README.md: QmcoWaezoTDWvV749RJBNB7WmXCrNuqZpmGKSiUPPNBsGi __init__.py: QmPMtKUrzVJp594VqNuapJzCesWLQ6Awjqv2ufG3wKNRmH custom_types.py: QmRcgwDdTxkSHyfF9eoMtsb5P5GJDm4oyLq5W6ZBko1MFU - default.proto: QmP9QG2c2nTWYxEMDeSS2JHUJ4b3KMEeoov1fWHZtcJ9wv - default_pb2.py: QmbfLCqPe7XyJLpoeT87bG1KTBTRbmaNrPgU39DHQWgpgW + default.proto: QmUgEHG3L7M6ar7E4BDdTpUV8UWhbTbW2etFAk1FtDWuk1 + default_pb2.py: QmWZGRz16egJBqQVNJ5sN5VEeTSoCq85eJEUqTPqn4caFQ dialogues.py: Qmc991snbS7DwFxo1cKcq1rQ2uj7y8ukp14kfe2zve387C message.py: QmeaadvKib9QqpjZgd7NiDUqGRpC2eZPVpgq1dY3PYacht serialization.py: QmZVLCas8LRuE6SkzGGtb3TB5oSc1J2f7X4bJuxi8qyQ9i diff --git a/packages/hashes.csv b/packages/hashes.csv index 405d4425e6..52992c39b4 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -35,7 +35,7 @@ fetchai/connections/webhook,QmQJHzHQBF3USzHNiZ35thj5RNXYuFcQ78yxr3TS9gkQJo fetchai/contracts/erc1155,QmRPpD2RSxgZfhtuiv4vRp6oP1uZ4nsECKrCkwmyUgzUpq fetchai/contracts/scaffold,QmVfDLFc2Ly1iDe8Bd6D4SL28wjXZ4zMkuFA3gYWxbubXG fetchai/protocols/contract_api,QmYxGJTnAEAApBNXqdxAd6hPPkgTvnwJAqCfoi1PWTfbF2 -fetchai/protocols/default,QmT6pQCt5nKCMVjmY7W9SShtSS5QBN2LfUdvX1ZdQBap5L +fetchai/protocols/default,QmRnAnx686zf2LJG3GhHNQV1xTTf2fxxpHTULvKY9A9fDJ fetchai/protocols/fipa,QmbxnVbH9AdsgU1Ye3SvSCjPxxwAH1kAGjeVBF9SFnjrb5 fetchai/protocols/gym,QmcoRdy2RTsXw5o7ASWVX5P34XuNMegCzGm9BjxAUXptBm fetchai/protocols/http,QmPF2HHxGt6XGQ4SjhhefGR5VaQxZiGTFz6RK6Uay9f9xN From ca534b0197b5ee87955fb55406d6e5e0c5d567cf Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Tue, 1 Sep 2020 23:59:21 +0200 Subject: [PATCH 011/155] avoid using google.protobuf.Any it results in too much overhead with no relevant benefits; Instead, we decided to use the type bytes for DialogueMessage.content field. The result is that the dialogue fields act as message header, whereas the actual performative content is serialized as bytes, in a format specified by the protocol serialization layer. This will give more flexibility for protocol implementations. --- aea/mail/base.proto | 3 +- aea/mail/base_pb2.py | 29 +- aea/protocols/base.py | 6 +- aea/protocols/default/protocol.yaml | 2 +- aea/protocols/default/serialization.py | 4 +- aea/protocols/generator/base.py | 9 +- docs/agent-vs-aea.md | 4 +- docs/build-aea-programmatically.md | 4 +- packages/hashes.csv | 2 +- scripts/generate_all_protocols.py | 153 +----- tests/data/generator/t_protocol/protocol.yaml | 6 +- .../generator/t_protocol/serialization.py | 4 +- .../generator/t_protocol/t_protocol.proto | 2 +- .../generator/t_protocol/t_protocol_pb2.py | 478 +++++++++--------- .../generator/t_protocol_no_ct/protocol.yaml | 6 +- .../t_protocol_no_ct/serialization.py | 4 +- .../t_protocol_no_ct/t_protocol_no_ct.proto | 2 +- .../t_protocol_no_ct/t_protocol_no_ct_pb2.py | 424 ++++++++-------- .../test_agent_vs_aea/agent_code_block.py | 2 +- .../test_agent_vs_aea/test_agent_vs_aea.py | 2 +- .../programmatic_aea.py | 2 +- .../test_programmatic_aea.py | 2 +- .../test_generator/test_generator.py | 2 +- 23 files changed, 520 insertions(+), 632 deletions(-) diff --git a/aea/mail/base.proto b/aea/mail/base.proto index d9dc52dfec..ccc5153af9 100644 --- a/aea/mail/base.proto +++ b/aea/mail/base.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package fetch.aea; -import "google/protobuf/any.proto"; import "google/protobuf/struct.proto"; @@ -11,7 +10,7 @@ message DialogueMessage { string dialogue_starter_reference = 2; string dialogue_responder_reference = 3; int32 target = 4; - google.protobuf.Any content = 5; + bytes content = 5; } message Message { diff --git a/aea/mail/base_pb2.py b/aea/mail/base_pb2.py index 3017f52e4d..261ffb4f2d 100644 --- a/aea/mail/base_pb2.py +++ b/aea/mail/base_pb2.py @@ -14,7 +14,6 @@ _sym_db = _symbol_database.Default() -from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 @@ -24,12 +23,9 @@ syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\nbase.proto\x12\tfetch.aea\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto"\xa6\x01\n\x0f\x44ialogueMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12%\n\x07\x63ontent\x18\x05 \x01(\x0b\x32\x14.google.protobuf.Any"u\n\x07Message\x12\'\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x12\x36\n\x10\x64ialogue_message\x18\x02 \x01(\x0b\x32\x1a.fetch.aea.DialogueMessageH\x00\x42\t\n\x07message"Y\n\x08\x45nvelope\x12\n\n\x02to\x18\x01 \x01(\t\x12\x0e\n\x06sender\x18\x02 \x01(\t\x12\x13\n\x0bprotocol_id\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\x0c\x12\x0b\n\x03uri\x18\x05 \x01(\tb\x06proto3' + '\n\nbase.proto\x12\tfetch.aea\x1a\x1cgoogle/protobuf/struct.proto"\x90\x01\n\x0f\x44ialogueMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x0f\n\x07\x63ontent\x18\x05 \x01(\x0c"u\n\x07Message\x12\'\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x12\x36\n\x10\x64ialogue_message\x18\x02 \x01(\x0b\x32\x1a.fetch.aea.DialogueMessageH\x00\x42\t\n\x07message"Y\n\x08\x45nvelope\x12\n\n\x02to\x18\x01 \x01(\t\x12\x0e\n\x06sender\x18\x02 \x01(\t\x12\x13\n\x0bprotocol_id\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\x0c\x12\x0b\n\x03uri\x18\x05 \x01(\tb\x06proto3' ), - dependencies=[ - google_dot_protobuf_dot_any__pb2.DESCRIPTOR, - google_dot_protobuf_dot_struct__pb2.DESCRIPTOR, - ], + dependencies=[google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,], ) @@ -117,11 +113,11 @@ full_name="fetch.aea.DialogueMessage.content", index=4, number=5, - type=11, - cpp_type=10, + type=12, + cpp_type=9, label=1, has_default_value=False, - default_value=None, + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -139,8 +135,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=83, - serialized_end=249, + serialized_start=56, + serialized_end=200, ) @@ -204,8 +200,8 @@ fields=[], ), ], - serialized_start=251, - serialized_end=368, + serialized_start=202, + serialized_end=319, ) @@ -315,13 +311,10 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=370, - serialized_end=459, + serialized_start=321, + serialized_end=410, ) -_DIALOGUEMESSAGE.fields_by_name[ - "content" -].message_type = google_dot_protobuf_dot_any__pb2._ANY _MESSAGE.fields_by_name[ "body" ].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT diff --git a/aea/protocols/base.py b/aea/protocols/base.py index 64dbe41925..1c205ceb3a 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -295,7 +295,9 @@ def encode(msg: Message) -> bytes: body_json = Struct() body_json.update(new_body) # pylint: disable=no-member - dialogue_message_pb.content.Pack(body_json) # pylint: disable=no-member + dialogue_message_pb.content = ( # pylint: disable=no-member + body_json.SerializeToString() + ) message_pb.dialogue_message.CopyFrom( # pylint: disable=no-member dialogue_message_pb ) @@ -332,7 +334,7 @@ def decode(obj: bytes) -> Message: dialogue_message_pb.dialogue_responder_reference ) body_json = Struct() - dialogue_message_pb.content.Unpack(body_json) + body_json.ParseFromString(dialogue_message_pb.content) body = dict(body_json) body["message_id"] = message_id body["target"] = target diff --git a/aea/protocols/default/protocol.yaml b/aea/protocols/default/protocol.yaml index 9b90088ed4..c3afbaf605 100644 --- a/aea/protocols/default/protocol.yaml +++ b/aea/protocols/default/protocol.yaml @@ -13,7 +13,7 @@ fingerprint: default_pb2.py: QmWZGRz16egJBqQVNJ5sN5VEeTSoCq85eJEUqTPqn4caFQ dialogues.py: Qmc991snbS7DwFxo1cKcq1rQ2uj7y8ukp14kfe2zve387C message.py: QmeaadvKib9QqpjZgd7NiDUqGRpC2eZPVpgq1dY3PYacht - serialization.py: QmZVLCas8LRuE6SkzGGtb3TB5oSc1J2f7X4bJuxi8qyQ9i + serialization.py: QmSXncJHmAzU957A4VSa72yz8H41xBiTLTFSr31NNhBkjQ fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/aea/protocols/default/serialization.py b/aea/protocols/default/serialization.py index cf9a35a8bd..f91b875e99 100644 --- a/aea/protocols/default/serialization.py +++ b/aea/protocols/default/serialization.py @@ -69,7 +69,7 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - dialogue_message_pb.content.Pack(default_msg) + dialogue_message_pb.content = default_msg.SerializeToString() message_pb.dialogue_message.CopyFrom(dialogue_message_pb) message_bytes = message_pb.SerializeToString() @@ -93,7 +93,7 @@ def decode(obj: bytes) -> Message: ) target = message_pb.dialogue_message.target - message_pb.dialogue_message.content.Unpack(default_pb) + default_pb.ParseFromString(message_pb.dialogue_message.content) performative = default_pb.WhichOneof("performative") performative_id = DefaultMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index d8175c40e4..e04094b8bf 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -1590,8 +1590,11 @@ def _serialization_class_str(self) -> str: ) self._change_indent(-1) - cls_str += self.indent + "dialogue_message_pb.content.Pack({}_msg)\n\n".format( - self.protocol_specification.name, + cls_str += ( + self.indent + + "dialogue_message_pb.content = {}_msg.SerializeToString()\n\n".format( + self.protocol_specification.name, + ) ) cls_str += ( self.indent + "message_pb.dialogue_message.CopyFrom(dialogue_message_pb)\n" @@ -1628,7 +1631,7 @@ def _serialization_class_str(self) -> str: cls_str += self.indent + "target = message_pb.dialogue_message.target\n\n" cls_str += ( self.indent - + "message_pb.dialogue_message.content.Unpack({}_pb)\n".format( + + "{}_pb.ParseFromString(message_pb.dialogue_message.content)\n".format( self.protocol_specification.name ) ) diff --git a/docs/agent-vs-aea.md b/docs/agent-vs-aea.md index 8ccb2f760b..dc71f17e19 100644 --- a/docs/agent-vs-aea.md +++ b/docs/agent-vs-aea.md @@ -117,7 +117,7 @@ We run the agent from a different thread so that we can still use the main threa 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:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," + message_text = b"my_agent,other_agent,fetchai/default:0.5.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) @@ -231,7 +231,7 @@ def run(): 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:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," + message_text = b"my_agent,other_agent,fetchai/default:0.5.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) diff --git a/docs/build-aea-programmatically.md b/docs/build-aea-programmatically.md index 2a75b6bebf..3515e188dc 100644 --- a/docs/build-aea-programmatically.md +++ b/docs/build-aea-programmatically.md @@ -121,7 +121,7 @@ We run the AEA from a different thread so that we can still use the main thread 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:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," + message_text = b"my_aea,other_agent,fetchai/default:0.5.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) @@ -236,7 +236,7 @@ def run(): 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:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," + message_text = b"my_aea,other_agent,fetchai/default:0.5.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) diff --git a/packages/hashes.csv b/packages/hashes.csv index 52992c39b4..1b0ab58f7f 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -35,7 +35,7 @@ fetchai/connections/webhook,QmQJHzHQBF3USzHNiZ35thj5RNXYuFcQ78yxr3TS9gkQJo fetchai/contracts/erc1155,QmRPpD2RSxgZfhtuiv4vRp6oP1uZ4nsECKrCkwmyUgzUpq fetchai/contracts/scaffold,QmVfDLFc2Ly1iDe8Bd6D4SL28wjXZ4zMkuFA3gYWxbubXG fetchai/protocols/contract_api,QmYxGJTnAEAApBNXqdxAd6hPPkgTvnwJAqCfoi1PWTfbF2 -fetchai/protocols/default,QmRnAnx686zf2LJG3GhHNQV1xTTf2fxxpHTULvKY9A9fDJ +fetchai/protocols/default,QmUEMSpVd4VVqUP2kFKZ2cSaF7REYEVj6TAFw3JsshdUZP fetchai/protocols/fipa,QmbxnVbH9AdsgU1Ye3SvSCjPxxwAH1kAGjeVBF9SFnjrb5 fetchai/protocols/gym,QmcoRdy2RTsXw5o7ASWVX5P34XuNMegCzGm9BjxAUXptBm fetchai/protocols/http,QmPF2HHxGt6XGQ4SjhhefGR5VaQxZiGTFz6RK6Uay9f9xN diff --git a/scripts/generate_all_protocols.py b/scripts/generate_all_protocols.py index 2b459da0fb..03efff5be7 100755 --- a/scripts/generate_all_protocols.py +++ b/scripts/generate_all_protocols.py @@ -19,136 +19,27 @@ # ------------------------------------------------------------------------------ """ -This tool generates the API docs. +This script takes all the protocol specification (scraped from the protocol README) +and calls the `aea generate protocol` command. """ - -import shutil -import subprocess # nosec +import subprocess import sys from pathlib import Path -DOCS_DIR = "docs/" -MODULES_TO_PATH = { - "aea.aea": "api/aea.md", - "aea.aea_builder": "api/aea_builder.md", - "aea.agent": "api/agent.md", - "aea.agent_loop": "api/agent_loop.md", - "aea.launcher": "api/launcher.md", - "aea.multiplexer": "api/multiplexer.md", - "aea.runner": "api/runner.md", - "aea.runtime": "api/runtime.md", - "aea.components.base": "api/components/base.md", - "aea.components.loader": "api/components/loader.md", - "aea.configurations.base": "api/configurations/base.md", - "aea.configurations.constants": "api/configurations/constants.md", - "aea.configurations.loader": "api/configurations/loader.md", - "aea.connections.base": "api/connections/base.md", - "aea.connections.stub.connection": "api/connections/stub/connection.md", - "aea.context.base": "api/context/base.md", - "aea.contracts.base": "api/contracts/base.md", - "aea.crypto.base": "api/crypto/base.md", - "aea.crypto.cosmos": "api/crypto/cosmos.md", - "aea.crypto.ethereum": "api/crypto/ethereum.md", - "aea.crypto.fetchai": "api/crypto/fetchai.md", - "aea.crypto.helpers": "api/crypto/helpers.md", - "aea.crypto.ledger_apis": "api/crypto/ledger_apis.md", - "aea.crypto.wallet": "api/crypto/wallet.md", - "aea.crypto.registries.base": "api/crypto/registries/base.md", - "aea.decision_maker.base": "api/decision_maker/base.md", - "aea.decision_maker.default": "api/decision_maker/default.md", - "aea.helpers.ipfs.base": "api/helpers/ipfs/base.md", - "aea.helpers.preference_representations.base": "api/helpers/preference_representations/base.md", - "aea.helpers.search.generic": "api/helpers/search/generic.md", - "aea.helpers.search.models": "api/helpers/search/models.md", - "aea.helpers.transaction.base": "api/helpers/transaction/base.md", - "aea.helpers.async_friendly_queue": "api/helpers/async_friendly_queue.md", - "aea.helpers.async_utils": "api/helpers/async_utils.md", - "aea.helpers.base": "api/helpers/base.md", - "aea.helpers.exception_policy": "api/helpers/exception_policy.md", - "aea.helpers.exec_timeout": "api/helpers/exec_timeout.md", - "aea.helpers.file_lock": "api/helpers/file_lock.md", - "aea.helpers.logging": "api/helpers/logging.md", - "aea.helpers.multiple_executor": "api/helpers/multiple_executor.md", - "aea.helpers.pipe": "api/helpers/pipe.md", - "aea.helpers.pypi": "api/helpers/pypi.md", - "aea.helpers.win32": "api/helpers/win32.md", - "aea.identity.base": "api/identity/base.md", - "aea.mail.base": "api/mail/base.md", - "aea.protocols.base": "api/protocols/base.md", - "aea.protocols.dialogue.base": "api/helpers/dialogue/base.md", - "aea.protocols.generator.base": "api/protocols/generator/base.md", - "aea.protocols.generator.common": "api/protocols/generator/common.md", - "aea.protocols.generator.extract_specification": "api/protocols/generator/extract_specification.md", - "aea.protocols.generator.validate": "api/protocols/generator/validate.md", - "aea.protocols.default.custom_types": "api/protocols/default/custom_types.md", - "aea.protocols.default.dialogues": "api/protocols/default/dialogues.md", - "aea.protocols.default.message": "api/protocols/default/message.md", - "aea.protocols.default.serialization": "api/protocols/default/serialization.md", - "aea.protocols.signing.custom_types": "api/protocols/signing/custom_types.md", - "aea.protocols.signing.dialogues": "api/protocols/signing/dialogues.md", - "aea.protocols.signing.message": "api/protocols/signing/message.md", - "aea.protocols.signing.serialization": "api/protocols/signing/serialization.md", - "aea.protocols.state_update.dialogues": "api/protocols/state_update/dialogues.md", - "aea.protocols.state_update.message": "api/protocols/state_update/message.md", - "aea.protocols.state_update.serialization": "api/protocols/state_update/serialization.md", - "aea.registries.base": "api/registries/base.md", - "aea.registries.filter": "api/registries/filter.md", - "aea.registries.resources": "api/registries/resources.md", - "aea.skills.base": "api/skills/base.md", - "aea.skills.behaviours": "api/skills/behaviours.md", - "aea.skills.tasks": "api/skills/tasks.md", - "aea.skills.error.handlers": "api/skills/error/handlers.md", - "aea.test_tools.generic": "api/test_tools/generic.md", - "aea.test_tools.test_cases": "api/helpers/test_cases.md", -} - - -def create_subdir(path) -> None: - """ - Create a subdirectory. - - :param path: the directory path - """ - directory = "/".join(path.split("/")[:-1]) - Path(directory).mkdir(parents=True, exist_ok=True) - -def replace_underscores(text: str) -> str: - """ - Replace escaped underscores in a text. - - :return: the processed text - """ - text_a = text.replace("\\_\\_", "`__`") - text_b = text_a.replace("\\_", "`_`") - return text_b - - -def save_to_file(path: str, text: str) -> None: - """ - Save to a file path. - - :param path: the path - :param text: the text - :return: None - """ - with open(path, "w") as f: - f.write(text) - - -def generate_api_docs(): - """Generate the api docs.""" - for module, rel_path in MODULES_TO_PATH.items(): - path = DOCS_DIR + rel_path - create_subdir(path) - pydoc = subprocess.Popen( # nosec - ["pydoc-markdown", "-m", module, "-I", "."], stdout=subprocess.PIPE - ) - stdout, _ = pydoc.communicate() - pydoc.wait() - stdout_text = stdout.decode("utf-8") - text = replace_underscores(stdout_text) - save_to_file(path, text) +PROTOCOL_PACKAGES_PATH = [ + Path("aea", "protocols", "default"), + Path("aea", "protocols", "signing"), + Path("aea", "protocols", "state_update"), + Path("packages", "fetchai", "protocols", "contract_api"), + Path("packages", "fetchai", "protocols", "fipa"), + Path("packages", "fetchai", "protocols", "gym"), + Path("packages", "fetchai", "protocols", "http"), + Path("packages", "fetchai", "protocols", "ledger_api"), + Path("packages", "fetchai", "protocols", "ml_trade"), + Path("packages", "fetchai", "protocols", "oef_search"), + Path("packages", "fetchai", "protocols", "tac"), +] def install(package: str) -> int: @@ -159,13 +50,13 @@ def install(package: str) -> int: :return: the return code. """ return subprocess.check_call( # nosec - [sys.executable, "-m", "pip", "install", package] + [sys.executable, "-m", "aea", "generate", "protocol", package] ) +def main(): + """Run the script.""" + + if __name__ == "__main__": - res = shutil.which("pydoc-markdown") - if res is None: - install("pydoc-markdown==3.3.0") - sys.exit(1) - generate_api_docs() + main() diff --git a/tests/data/generator/t_protocol/protocol.yaml b/tests/data/generator/t_protocol/protocol.yaml index a38e8c0214..ada18ae4d7 100644 --- a/tests/data/generator/t_protocol/protocol.yaml +++ b/tests/data/generator/t_protocol/protocol.yaml @@ -10,9 +10,9 @@ fingerprint: custom_types.py: QmVboXL98TzRtreCRMrCF3U9xjRGRkGJjNgDBTAm5GXyLq dialogues.py: QmVUoaW4CNgjZNy6PzmQrSYTCdeWQERsQR5maXhD9cd6HF message.py: QmS3NcTMgbDx1ZkXkzwfiML26LU9FPfgjg2XznpL8wueQR - serialization.py: QmZEWNPf4xV45vgNYMoEpuybyVAg7dkTo2jDjUqN6VVvS7 - t_protocol.proto: Qmc1JYbXiPNGQGL2Sj5FJm4VEZho87Nor3aa4Q29ymj5fs - t_protocol_pb2.py: QmcEHyEAQPacC8YzAWv93p5mhEdyHUGaN93rifBmo8GqL9 + serialization.py: QmXHxombhGXKfMNhpvs2SKmXVbRac1gvn4m2hxsiGyRJKs + t_protocol.proto: QmXpZUUnMQ2JJtg3ZEFfec86HtpTyD85qN8xCnJWgrVq5J + t_protocol_pb2.py: QmR6ZXkZ2yiYLWWPnS1CdT3Tv59MXdpy6fg8GsKDAmqZFK fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/generator/t_protocol/serialization.py b/tests/data/generator/t_protocol/serialization.py index 5d4574dfe4..0b2281fb52 100644 --- a/tests/data/generator/t_protocol/serialization.py +++ b/tests/data/generator/t_protocol/serialization.py @@ -278,7 +278,7 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - dialogue_message_pb.content.Pack(t_protocol_msg) + dialogue_message_pb.content = t_protocol_msg.SerializeToString() message_pb.dialogue_message.CopyFrom(dialogue_message_pb) message_bytes = message_pb.SerializeToString() @@ -302,7 +302,7 @@ def decode(obj: bytes) -> Message: ) target = message_pb.dialogue_message.target - message_pb.dialogue_message.content.Unpack(t_protocol_pb) + t_protocol_pb.ParseFromString(message_pb.dialogue_message.content) performative = t_protocol_pb.WhichOneof("performative") performative_id = TProtocolMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/tests/data/generator/t_protocol/t_protocol.proto b/tests/data/generator/t_protocol/t_protocol.proto index f977c2fb72..50dd27992d 100644 --- a/tests/data/generator/t_protocol/t_protocol.proto +++ b/tests/data/generator/t_protocol/t_protocol.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.TProtocol; +package fetchai.aea.fetchai.t_protocol; message TProtocolMessage{ diff --git a/tests/data/generator/t_protocol/t_protocol_pb2.py b/tests/data/generator/t_protocol/t_protocol_pb2.py index 9b4f4e62b4..5e0ece150b 100644 --- a/tests/data/generator/t_protocol/t_protocol_pb2.py +++ b/tests/data/generator/t_protocol/t_protocol_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="t_protocol.proto", - package="fetch.aea.TProtocol", + package="fetchai.aea.fetchai.t_protocol", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\x10t_protocol.proto\x12\x13\x66\x65tch.aea.TProtocol"\xbd\x32\n\x10TProtocolMessage\x12]\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32\x42.fetch.aea.TProtocol.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12u\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32N.fetch.aea.TProtocol.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12]\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32\x42.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12[\n\x0eperformative_o\x18\x08 \x01(\x0b\x32\x41.fetch.aea.TProtocol.TProtocolMessage.Performative_O_PerformativeH\x00\x12_\n\x10performative_pct\x18\t \x01(\x0b\x32\x43.fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12_\n\x10performative_pmt\x18\n \x01(\x0b\x32\x43.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12]\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32\x42.fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\x9c\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x05\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(\x05\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12R\n\ndict_field\x18\x08 \x03(\x0b\x32>.fetch.aea.TProtocol.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x63\n\x1cPerformative_Ct_Performative\x12\x43\n\ncontent_ct\x18\x01 \x01(\x0b\x32/.fetch.aea.TProtocol.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(\x05\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(\x05\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(\x05\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\xe7\x15\n\x1dPerformative_Pmt_Performative\x12|\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12x\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12|\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12z\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12x\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12~\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32].fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12z\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12~\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32].fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12|\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12z\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12|\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12x\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12|\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32\\.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12z\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32[.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12x\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32Z.fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xf9\x0b\n\x1cPerformative_Mt_Performative\x12W\n\x1e\x63ontent_union_1_type_DataModel\x18\x01 \x01(\x0b\x32/.fetch.aea.TProtocol.TProtocolMessage.DataModel\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x02 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x04 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x05 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x06 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x07 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x08 \x03(\x08\x12\x93\x01\n$content_union_1_type_dict_of_str_int\x18\t \x03(\x0b\x32\x65.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\n \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x0b \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0c \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\r \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\x0e \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0f \x03(\x0c\x12\x93\x01\n$content_union_2_type_dict_of_str_int\x18\x10 \x03(\x0b\x32\x65.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x97\x01\n&content_union_2_type_dict_of_int_float\x18\x11 \x03(\x0b\x32g.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\x99\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x12 \x03(\x0b\x32h.fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\x95\x04\n\x1bPerformative_O_Performative\x12\x45\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32/.fetch.aea.TProtocol.TProtocolMessage.DataModel\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(\x05\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\x12y\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32Y.fetch.aea.TProtocol.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + '\n\x10t_protocol.proto\x12\x1e\x66\x65tchai.aea.fetchai.t_protocol"\xa3\x35\n\x10TProtocolMessage\x12h\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32M.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12\x80\x01\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32Y.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12h\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32M.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12\x66\n\x0eperformative_o\x18\x08 \x01(\x0b\x32L.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_PerformativeH\x00\x12j\n\x10performative_pct\x18\t \x01(\x0b\x32N.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12j\n\x10performative_pmt\x18\n \x01(\x0b\x32N.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12h\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32M.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\xa7\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x05\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(\x05\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12]\n\ndict_field\x18\x08 \x03(\x0b\x32I.fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1an\n\x1cPerformative_Ct_Performative\x12N\n\ncontent_ct\x18\x01 \x01(\x0b\x32:.fetchai.aea.fetchai.t_protocol.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(\x05\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(\x05\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(\x05\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\x9b\x17\n\x1dPerformative_Pmt_Performative\x12\x87\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32g.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x83\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32\x65.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x87\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32g.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x85\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32\x66.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x83\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32\x65.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x89\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32h.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x85\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32\x66.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x89\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32h.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x87\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32g.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x85\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32\x66.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x87\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32g.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x83\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32\x65.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x87\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32g.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x85\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32\x66.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x83\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32\x65.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xb0\x0c\n\x1cPerformative_Mt_Performative\x12\x62\n\x1e\x63ontent_union_1_type_DataModel\x18\x01 \x01(\x0b\x32:.fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x02 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x04 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x05 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x06 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x07 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x08 \x03(\x08\x12\x9e\x01\n$content_union_1_type_dict_of_str_int\x18\t \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\n \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x0b \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0c \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\r \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\x0e \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0f \x03(\x0c\x12\x9e\x01\n$content_union_2_type_dict_of_str_int\x18\x10 \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xa2\x01\n&content_union_2_type_dict_of_int_float\x18\x11 \x03(\x0b\x32r.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xa4\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x12 \x03(\x0b\x32s.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\xac\x04\n\x1bPerformative_O_Performative\x12P\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32:.fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel\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(\x05\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\x84\x01\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32\x64.fetchai.aea.fetchai.t_protocol.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' ), ) _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY = _descriptor.Descriptor( name="DictFieldEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.DictFieldEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.DictFieldEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry.key", index=0, number=1, type=5, @@ -52,7 +52,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.DictFieldEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry.value", index=1, number=2, type=8, @@ -77,20 +77,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=990, - serialized_end=1038, + serialized_start=1090, + serialized_end=1138, ) _TPROTOCOLMESSAGE_DATAMODEL = _descriptor.Descriptor( name="DataModel", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="bytes_field", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.bytes_field", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.bytes_field", index=0, number=1, type=12, @@ -108,7 +108,7 @@ ), _descriptor.FieldDescriptor( name="int_field", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.int_field", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.int_field", index=1, number=2, type=5, @@ -126,7 +126,7 @@ ), _descriptor.FieldDescriptor( name="float_field", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.float_field", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.float_field", index=2, number=3, type=2, @@ -144,7 +144,7 @@ ), _descriptor.FieldDescriptor( name="bool_field", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.bool_field", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.bool_field", index=3, number=4, type=8, @@ -162,7 +162,7 @@ ), _descriptor.FieldDescriptor( name="str_field", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.str_field", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.str_field", index=4, number=5, type=9, @@ -180,7 +180,7 @@ ), _descriptor.FieldDescriptor( name="set_field", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.set_field", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.set_field", index=5, number=6, type=5, @@ -198,7 +198,7 @@ ), _descriptor.FieldDescriptor( name="list_field", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.list_field", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.list_field", index=6, number=7, type=9, @@ -216,7 +216,7 @@ ), _descriptor.FieldDescriptor( name="dict_field", - full_name="fetch.aea.TProtocol.TProtocolMessage.DataModel.dict_field", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.dict_field", index=7, number=8, type=11, @@ -241,20 +241,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=754, - serialized_end=1038, + serialized_start=843, + serialized_end=1138, ) _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Ct_Performative", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Ct_Performative", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_ct", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Ct_Performative.content_ct", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_Performative.content_ct", index=0, number=1, type=11, @@ -279,20 +279,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1040, - serialized_end=1139, + serialized_start=1140, + serialized_end=1250, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pt_Performative", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_Performative", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_Performative.content_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_bytes", index=0, number=1, type=12, @@ -310,7 +310,7 @@ ), _descriptor.FieldDescriptor( name="content_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_Performative.content_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_int", index=1, number=2, type=5, @@ -328,7 +328,7 @@ ), _descriptor.FieldDescriptor( name="content_float", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_Performative.content_float", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_float", index=2, number=3, type=2, @@ -346,7 +346,7 @@ ), _descriptor.FieldDescriptor( name="content_bool", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_Performative.content_bool", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_bool", index=3, number=4, type=8, @@ -364,7 +364,7 @@ ), _descriptor.FieldDescriptor( name="content_str", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_Performative.content_str", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_str", index=4, number=5, type=9, @@ -389,20 +389,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1142, - serialized_end=1282, + serialized_start=1253, + serialized_end=1393, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pct_Performative", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_set_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative.content_set_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_bytes", index=0, number=1, type=12, @@ -420,7 +420,7 @@ ), _descriptor.FieldDescriptor( name="content_set_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative.content_set_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_int", index=1, number=2, type=5, @@ -438,7 +438,7 @@ ), _descriptor.FieldDescriptor( name="content_set_float", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative.content_set_float", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_float", index=2, number=3, type=2, @@ -456,7 +456,7 @@ ), _descriptor.FieldDescriptor( name="content_set_bool", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative.content_set_bool", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_bool", index=3, number=4, type=8, @@ -474,7 +474,7 @@ ), _descriptor.FieldDescriptor( name="content_set_str", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative.content_set_str", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_str", index=4, number=5, type=9, @@ -492,7 +492,7 @@ ), _descriptor.FieldDescriptor( name="content_list_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative.content_list_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_bytes", index=5, number=6, type=12, @@ -510,7 +510,7 @@ ), _descriptor.FieldDescriptor( name="content_list_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative.content_list_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_int", index=6, number=7, type=5, @@ -528,7 +528,7 @@ ), _descriptor.FieldDescriptor( name="content_list_float", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative.content_list_float", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_float", index=7, number=8, type=2, @@ -546,7 +546,7 @@ ), _descriptor.FieldDescriptor( name="content_list_bool", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative.content_list_bool", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_bool", index=8, number=9, type=8, @@ -564,7 +564,7 @@ ), _descriptor.FieldDescriptor( name="content_list_str", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative.content_list_str", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_str", index=9, number=10, type=9, @@ -589,20 +589,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1285, - serialized_end=1581, + serialized_start=1396, + serialized_end=1692, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = _descriptor.Descriptor( name="ContentDictIntBytesEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.key", index=0, number=1, type=5, @@ -620,7 +620,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.value", index=1, number=2, type=12, @@ -645,20 +645,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3487, - serialized_end=3545, + serialized_start=3778, + serialized_end=3836, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = _descriptor.Descriptor( name="ContentDictIntIntEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.key", index=0, number=1, type=5, @@ -676,7 +676,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.value", index=1, number=2, type=5, @@ -701,20 +701,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3547, - serialized_end=3603, + serialized_start=3838, + serialized_end=3894, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = _descriptor.Descriptor( name="ContentDictIntFloatEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.key", index=0, number=1, type=5, @@ -732,7 +732,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.value", index=1, number=2, type=2, @@ -757,20 +757,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3605, - serialized_end=3663, + serialized_start=3896, + serialized_end=3954, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = _descriptor.Descriptor( name="ContentDictIntBoolEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.key", index=0, number=1, type=5, @@ -788,7 +788,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.value", index=1, number=2, type=8, @@ -813,20 +813,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3665, - serialized_end=3722, + serialized_start=3956, + serialized_end=4013, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = _descriptor.Descriptor( name="ContentDictIntStrEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.key", index=0, number=1, type=5, @@ -844,7 +844,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.value", index=1, number=2, type=9, @@ -869,20 +869,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3724, - serialized_end=3780, + serialized_start=4015, + serialized_end=4071, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = _descriptor.Descriptor( name="ContentDictBoolBytesEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.key", index=0, number=1, type=8, @@ -900,7 +900,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.value", index=1, number=2, type=12, @@ -925,20 +925,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3782, - serialized_end=3841, + serialized_start=4073, + serialized_end=4132, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = _descriptor.Descriptor( name="ContentDictBoolIntEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.key", index=0, number=1, type=8, @@ -956,7 +956,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.value", index=1, number=2, type=5, @@ -981,20 +981,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3843, - serialized_end=3900, + serialized_start=4134, + serialized_end=4191, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = _descriptor.Descriptor( name="ContentDictBoolFloatEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.key", index=0, number=1, type=8, @@ -1012,7 +1012,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.value", index=1, number=2, type=2, @@ -1037,20 +1037,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3902, - serialized_end=3961, + serialized_start=4193, + serialized_end=4252, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = _descriptor.Descriptor( name="ContentDictBoolBoolEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.key", index=0, number=1, type=8, @@ -1068,7 +1068,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.value", index=1, number=2, type=8, @@ -1093,20 +1093,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3963, - serialized_end=4021, + serialized_start=4254, + serialized_end=4312, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = _descriptor.Descriptor( name="ContentDictBoolStrEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.key", index=0, number=1, type=8, @@ -1124,7 +1124,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.value", index=1, number=2, type=9, @@ -1149,20 +1149,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4023, - serialized_end=4080, + serialized_start=4314, + serialized_end=4371, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = _descriptor.Descriptor( name="ContentDictStrBytesEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.key", index=0, number=1, type=9, @@ -1180,7 +1180,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.value", index=1, number=2, type=12, @@ -1205,20 +1205,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4082, - serialized_end=4140, + serialized_start=4373, + serialized_end=4431, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = _descriptor.Descriptor( name="ContentDictStrIntEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.key", index=0, number=1, type=9, @@ -1236,7 +1236,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.value", index=1, number=2, type=5, @@ -1261,20 +1261,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4142, - serialized_end=4198, + serialized_start=4433, + serialized_end=4489, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = _descriptor.Descriptor( name="ContentDictStrFloatEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.key", index=0, number=1, type=9, @@ -1292,7 +1292,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.value", index=1, number=2, type=2, @@ -1317,20 +1317,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4200, - serialized_end=4258, + serialized_start=4491, + serialized_end=4549, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = _descriptor.Descriptor( name="ContentDictStrBoolEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.key", index=0, number=1, type=9, @@ -1348,7 +1348,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.value", index=1, number=2, type=8, @@ -1373,20 +1373,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4260, - serialized_end=4317, + serialized_start=4551, + serialized_end=4608, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = _descriptor.Descriptor( name="ContentDictStrStrEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.key", index=0, number=1, type=9, @@ -1404,7 +1404,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.value", index=1, number=2, type=9, @@ -1429,20 +1429,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4319, - serialized_end=4375, + serialized_start=4610, + serialized_end=4666, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pmt_Performative", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_dict_int_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_bytes", index=0, number=1, type=11, @@ -1460,7 +1460,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_int", index=1, number=2, type=11, @@ -1478,7 +1478,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_float", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_float", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_float", index=2, number=3, type=11, @@ -1496,7 +1496,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_bool", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_bool", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_bool", index=3, number=4, type=11, @@ -1514,7 +1514,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_str", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_str", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_str", index=4, number=5, type=11, @@ -1532,7 +1532,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_bytes", index=5, number=6, type=11, @@ -1550,7 +1550,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_int", index=6, number=7, type=11, @@ -1568,7 +1568,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_float", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_float", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_float", index=7, number=8, type=11, @@ -1586,7 +1586,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_bool", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_bool", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_bool", index=8, number=9, type=11, @@ -1604,7 +1604,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_str", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_str", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_str", index=9, number=10, type=11, @@ -1622,7 +1622,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_bytes", index=10, number=11, type=11, @@ -1640,7 +1640,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_int", index=11, number=12, type=11, @@ -1658,7 +1658,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_float", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_float", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_float", index=12, number=13, type=11, @@ -1676,7 +1676,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_bool", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_bool", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_bool", index=13, number=14, type=11, @@ -1694,7 +1694,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_str", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_str", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_str", index=14, number=15, type=11, @@ -1735,20 +1735,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1584, - serialized_end=4375, + serialized_start=1695, + serialized_end=4666, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( name="ContentUnion1TypeDictOfStrIntEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.key", index=0, number=1, type=9, @@ -1766,7 +1766,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.value", index=1, number=2, type=5, @@ -1791,20 +1791,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5624, - serialized_end=5692, + serialized_start=5970, + serialized_end=6038, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfStrIntEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.key", index=0, number=1, type=9, @@ -1822,7 +1822,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.value", index=1, number=2, type=5, @@ -1847,20 +1847,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5694, - serialized_end=5762, + serialized_start=6040, + serialized_end=6108, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfIntFloatEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.key", index=0, number=1, type=5, @@ -1878,7 +1878,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.value", index=1, number=2, type=2, @@ -1903,20 +1903,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5764, - serialized_end=5834, + serialized_start=6110, + serialized_end=6180, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfBoolBytesEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.key", index=0, number=1, type=8, @@ -1934,7 +1934,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.value", index=1, number=2, type=12, @@ -1959,20 +1959,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5836, - serialized_end=5907, + serialized_start=6182, + serialized_end=6253, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Mt_Performative", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_union_1_type_DataModel", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_DataModel", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_DataModel", index=0, number=1, type=11, @@ -1990,7 +1990,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_bytes", index=1, number=2, type=12, @@ -2008,7 +2008,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_int", index=2, number=3, type=5, @@ -2026,7 +2026,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_float", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_float", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_float", index=3, number=4, type=2, @@ -2044,7 +2044,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_bool", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_bool", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_bool", index=4, number=5, type=8, @@ -2062,7 +2062,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_str", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_str", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_str", index=5, number=6, type=9, @@ -2080,7 +2080,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_set_of_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_set_of_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_set_of_int", index=6, number=7, type=5, @@ -2098,7 +2098,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_list_of_bool", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_list_of_bool", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_list_of_bool", index=7, number=8, type=8, @@ -2116,7 +2116,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_dict_of_str_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_dict_of_str_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_dict_of_str_int", index=8, number=9, type=11, @@ -2134,7 +2134,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_bytes", index=9, number=10, type=12, @@ -2152,7 +2152,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_int", index=10, number=11, type=5, @@ -2170,7 +2170,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_str", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_str", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_str", index=11, number=12, type=9, @@ -2188,7 +2188,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_float", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_float", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_float", index=12, number=13, type=2, @@ -2206,7 +2206,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_bool", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_bool", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_bool", index=13, number=14, type=8, @@ -2224,7 +2224,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_bytes", index=14, number=15, type=12, @@ -2242,7 +2242,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_str_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_str_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_str_int", index=15, number=16, type=11, @@ -2260,7 +2260,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_int_float", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_int_float", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_int_float", index=16, number=17, type=11, @@ -2278,7 +2278,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_bool_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_bool_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_bool_bytes", index=17, number=18, type=11, @@ -2308,20 +2308,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4378, - serialized_end=5907, + serialized_start=4669, + serialized_end=6253, ) _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = _descriptor.Descriptor( name="ContentODictStrIntEntry", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry.key", index=0, number=1, type=9, @@ -2339,7 +2339,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry.value", index=1, number=2, type=5, @@ -2364,20 +2364,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6386, - serialized_end=6443, + serialized_start=6755, + serialized_end=6812, ) _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _descriptor.Descriptor( name="Performative_O_Performative", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_o_ct", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.content_o_ct", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_ct", index=0, number=1, type=11, @@ -2395,7 +2395,7 @@ ), _descriptor.FieldDescriptor( name="content_o_ct_is_set", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.content_o_ct_is_set", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_ct_is_set", index=1, number=2, type=8, @@ -2413,7 +2413,7 @@ ), _descriptor.FieldDescriptor( name="content_o_bool", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.content_o_bool", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_bool", index=2, number=3, type=8, @@ -2431,7 +2431,7 @@ ), _descriptor.FieldDescriptor( name="content_o_bool_is_set", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.content_o_bool_is_set", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_bool_is_set", index=3, number=4, type=8, @@ -2449,7 +2449,7 @@ ), _descriptor.FieldDescriptor( name="content_o_set_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.content_o_set_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_set_int", index=4, number=5, type=5, @@ -2467,7 +2467,7 @@ ), _descriptor.FieldDescriptor( name="content_o_set_int_is_set", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.content_o_set_int_is_set", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_set_int_is_set", index=5, number=6, type=8, @@ -2485,7 +2485,7 @@ ), _descriptor.FieldDescriptor( name="content_o_list_bytes", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.content_o_list_bytes", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_list_bytes", index=6, number=7, type=12, @@ -2503,7 +2503,7 @@ ), _descriptor.FieldDescriptor( name="content_o_list_bytes_is_set", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.content_o_list_bytes_is_set", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_list_bytes_is_set", index=7, number=8, type=8, @@ -2521,7 +2521,7 @@ ), _descriptor.FieldDescriptor( name="content_o_dict_str_int", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.content_o_dict_str_int", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_dict_str_int", index=8, number=9, type=11, @@ -2539,7 +2539,7 @@ ), _descriptor.FieldDescriptor( name="content_o_dict_str_int_is_set", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.content_o_dict_str_int_is_set", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_dict_str_int_is_set", index=9, number=10, type=8, @@ -2566,13 +2566,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5910, - serialized_end=6443, + serialized_start=6256, + serialized_end=6812, ) _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Empty_Contents_Performative", - full_name="fetch.aea.TProtocol.TProtocolMessage.Performative_Empty_Contents_Performative", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Empty_Contents_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -2585,20 +2585,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6445, - serialized_end=6487, + serialized_start=6814, + serialized_end=6856, ) _TPROTOCOLMESSAGE = _descriptor.Descriptor( name="TProtocolMessage", - full_name="fetch.aea.TProtocol.TProtocolMessage", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="performative_ct", - full_name="fetch.aea.TProtocol.TProtocolMessage.performative_ct", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_ct", index=0, number=5, type=11, @@ -2616,7 +2616,7 @@ ), _descriptor.FieldDescriptor( name="performative_empty_contents", - full_name="fetch.aea.TProtocol.TProtocolMessage.performative_empty_contents", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_empty_contents", index=1, number=6, type=11, @@ -2634,7 +2634,7 @@ ), _descriptor.FieldDescriptor( name="performative_mt", - full_name="fetch.aea.TProtocol.TProtocolMessage.performative_mt", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_mt", index=2, number=7, type=11, @@ -2652,7 +2652,7 @@ ), _descriptor.FieldDescriptor( name="performative_o", - full_name="fetch.aea.TProtocol.TProtocolMessage.performative_o", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_o", index=3, number=8, type=11, @@ -2670,7 +2670,7 @@ ), _descriptor.FieldDescriptor( name="performative_pct", - full_name="fetch.aea.TProtocol.TProtocolMessage.performative_pct", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_pct", index=4, number=9, type=11, @@ -2688,7 +2688,7 @@ ), _descriptor.FieldDescriptor( name="performative_pmt", - full_name="fetch.aea.TProtocol.TProtocolMessage.performative_pmt", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_pmt", index=5, number=10, type=11, @@ -2706,7 +2706,7 @@ ), _descriptor.FieldDescriptor( name="performative_pt", - full_name="fetch.aea.TProtocol.TProtocolMessage.performative_pt", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_pt", index=6, number=11, type=11, @@ -2742,14 +2742,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.TProtocol.TProtocolMessage.performative", + full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=42, - serialized_end=6503, + serialized_start=53, + serialized_end=6872, ) _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY.containing_type = _TPROTOCOLMESSAGE_DATAMODEL @@ -2997,12 +2997,12 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.DataModel.DictFieldEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry) ), ), DESCRIPTOR=_TPROTOCOLMESSAGE_DATAMODEL, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.DataModel) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel) ), ), Performative_Ct_Performative=_reflection.GeneratedProtocolMessageType( @@ -3011,7 +3011,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Ct_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_Performative) ), ), Performative_Pt_Performative=_reflection.GeneratedProtocolMessageType( @@ -3020,7 +3020,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pt_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative) ), ), Performative_Pct_Performative=_reflection.GeneratedProtocolMessageType( @@ -3029,7 +3029,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pct_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative) ), ), Performative_Pmt_Performative=_reflection.GeneratedProtocolMessageType( @@ -3042,7 +3042,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) ), ), ContentDictIntIntEntry=_reflection.GeneratedProtocolMessageType( @@ -3051,7 +3051,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) ), ), ContentDictIntFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -3060,7 +3060,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) ), ), ContentDictIntBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -3069,7 +3069,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) ), ), ContentDictIntStrEntry=_reflection.GeneratedProtocolMessageType( @@ -3078,7 +3078,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) ), ), ContentDictBoolBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -3087,7 +3087,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) ), ), ContentDictBoolIntEntry=_reflection.GeneratedProtocolMessageType( @@ -3096,7 +3096,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) ), ), ContentDictBoolFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -3105,7 +3105,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) ), ), ContentDictBoolBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -3114,7 +3114,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) ), ), ContentDictBoolStrEntry=_reflection.GeneratedProtocolMessageType( @@ -3123,7 +3123,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) ), ), ContentDictStrBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -3132,7 +3132,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) ), ), ContentDictStrIntEntry=_reflection.GeneratedProtocolMessageType( @@ -3141,7 +3141,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) ), ), ContentDictStrFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -3150,7 +3150,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) ), ), ContentDictStrBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -3159,7 +3159,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) ), ), ContentDictStrStrEntry=_reflection.GeneratedProtocolMessageType( @@ -3168,12 +3168,12 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) ), ), DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Pmt_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative) ), ), Performative_Mt_Performative=_reflection.GeneratedProtocolMessageType( @@ -3186,7 +3186,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) ), ), ContentUnion2TypeDictOfStrIntEntry=_reflection.GeneratedProtocolMessageType( @@ -3195,7 +3195,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) ), ), ContentUnion2TypeDictOfIntFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -3204,7 +3204,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) ), ), ContentUnion2TypeDictOfBoolBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -3213,12 +3213,12 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) ), ), DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Mt_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative) ), ), Performative_O_Performative=_reflection.GeneratedProtocolMessageType( @@ -3231,12 +3231,12 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry) ), ), DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_O_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative) ), ), Performative_Empty_Contents_Performative=_reflection.GeneratedProtocolMessageType( @@ -3245,12 +3245,12 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage.Performative_Empty_Contents_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Empty_Contents_Performative) ), ), DESCRIPTOR=_TPROTOCOLMESSAGE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocol.TProtocolMessage) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage) ), ) _sym_db.RegisterMessage(TProtocolMessage) diff --git a/tests/data/generator/t_protocol_no_ct/protocol.yaml b/tests/data/generator/t_protocol_no_ct/protocol.yaml index b00452fdca..cc03962623 100644 --- a/tests/data/generator/t_protocol_no_ct/protocol.yaml +++ b/tests/data/generator/t_protocol_no_ct/protocol.yaml @@ -9,9 +9,9 @@ fingerprint: __init__.py: QmRGHGRoZHGCXQ29v3q93Nt6J5TuhggYvUvZoQfrM6c3yp dialogues.py: QmUjFTMYk2C69dcYfsKorTQWJbaUGEz8orCQnkZtFbR6Je message.py: Qma11dAGwWr3oYSWAmRrwLJj9mLvyLVD66svTyHwU3HVNB - serialization.py: QmdxfZeYT1zo1oUgomEJwuZ6ttFodRXdYhaWBfzFhMrgBN - t_protocol_no_ct.proto: QmcQtSHEVK25h5s1MN5RkCrRGhHqbRmMvTjhgZNMk9tdUe - t_protocol_no_ct_pb2.py: QmfU5AaVARTUi8gmhShNZk23LcA6Qp2AY2ysy39LM32eLq + serialization.py: QmUvPmEbmg34A4XKCba3H2QFSdviUzEWMsBUNdJg4pysKD + t_protocol_no_ct.proto: QmUsW7bFZ3Ru3p6VSkAQekEhdYKcH2cxiSez291YxZ2kQ9 + t_protocol_no_ct_pb2.py: Qmb8Z6BoyZabtBkwdwKxCf9F5igPcp3faEirorkHDeis2g fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/generator/t_protocol_no_ct/serialization.py b/tests/data/generator/t_protocol_no_ct/serialization.py index b2c5289df3..1008802eba 100644 --- a/tests/data/generator/t_protocol_no_ct/serialization.py +++ b/tests/data/generator/t_protocol_no_ct/serialization.py @@ -262,7 +262,7 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - dialogue_message_pb.content.Pack(t_protocol_no_ct_msg) + dialogue_message_pb.content = t_protocol_no_ct_msg.SerializeToString() message_pb.dialogue_message.CopyFrom(dialogue_message_pb) message_bytes = message_pb.SerializeToString() @@ -286,7 +286,7 @@ def decode(obj: bytes) -> Message: ) target = message_pb.dialogue_message.target - message_pb.dialogue_message.content.Unpack(t_protocol_no_ct_pb) + 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 = dict() # type: Dict[str, Any] diff --git a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto index a0e83c267f..f393c099bf 100644 --- a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto +++ b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.TProtocolNoCt; +package fetchai.aea.fetchai.t_protocol_no_ct; message TProtocolNoCtMessage{ diff --git a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py index 7f229bd662..2cb124f14f 100644 --- a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py +++ b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="t_protocol_no_ct.proto", - package="fetch.aea.TProtocolNoCt", + package="fetchai.aea.fetchai.t_protocol_no_ct", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\x16t_protocol_no_ct.proto\x12\x17\x66\x65tch.aea.TProtocolNoCt"\x81/\n\x14TProtocolNoCtMessage\x12}\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32V.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12\x65\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32J.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12\x63\n\x0eperformative_o\x18\x07 \x01(\x0b\x32I.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12g\n\x10performative_pct\x18\x08 \x01(\x0b\x32K.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12g\n\x10performative_pmt\x18\t \x01(\x0b\x32K.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12\x65\n\x0fperformative_pt\x18\n \x01(\x0b\x32J.fetch.aea.TProtocolNoCt.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(\x05\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(\x05\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(\x05\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\xee\x16\n\x1dPerformative_Pmt_Performative\x12\x84\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x80\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x84\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x82\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x80\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x86\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32\x65.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x82\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x86\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32\x65.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x84\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x82\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x84\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x80\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x84\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32\x64.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x82\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32\x63.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x80\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32\x62.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xc0\x0b\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x02 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x03 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x05 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x06 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x07 \x03(\x08\x12\x9b\x01\n$content_union_1_type_dict_of_str_int\x18\x08 \x03(\x0b\x32m.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\t \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\n \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0b \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\x0c \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\r \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0e \x03(\x0c\x12\x9b\x01\n$content_union_2_type_dict_of_str_int\x18\x0f \x03(\x0b\x32m.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x9f\x01\n&content_union_2_type_dict_of_int_float\x18\x10 \x03(\x0b\x32o.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xa1\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x11 \x03(\x0b\x32p.fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\xba\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(\x05\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\x81\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32\x61.fetch.aea.TProtocolNoCt.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + '\n\x16t_protocol_no_ct.proto\x12$fetchai.aea.fetchai.t_protocol_no_ct"\xd4\x31\n\x14TProtocolNoCtMessage\x12\x8a\x01\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32\x63.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12r\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32W.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12p\n\x0eperformative_o\x18\x07 \x01(\x0b\x32V.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12t\n\x10performative_pct\x18\x08 \x01(\x0b\x32X.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12t\n\x10performative_pmt\x18\t \x01(\x0b\x32X.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12r\n\x0fperformative_pt\x18\n \x01(\x0b\x32W.fetchai.aea.fetchai.t_protocol_no_ct.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(\x05\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(\x05\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(\x05\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\xb1\x18\n\x1dPerformative_Pmt_Performative\x12\x91\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32q.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x8d\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32o.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x91\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32q.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x8f\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x8d\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32o.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x93\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32r.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x8f\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x93\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32r.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x91\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32q.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x8f\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x91\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32q.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x8d\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32o.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x91\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32q.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x8f\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x8d\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32o.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xf4\x0b\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x02 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x03 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x05 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x06 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x07 \x03(\x08\x12\xa8\x01\n$content_union_1_type_dict_of_str_int\x18\x08 \x03(\x0b\x32z.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\t \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\n \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0b \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\x0c \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\r \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0e \x03(\x0c\x12\xa8\x01\n$content_union_2_type_dict_of_str_int\x18\x0f \x03(\x0b\x32z.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xac\x01\n&content_union_2_type_dict_of_int_float\x18\x10 \x03(\x0b\x32|.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xae\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x11 \x03(\x0b\x32}.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\xc7\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(\x05\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\x8e\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32n.fetchai.aea.fetchai.t_protocol_no_ct.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' ), ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pt_Performative", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pt_Performative", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pt_Performative.content_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_bytes", index=0, number=1, type=12, @@ -52,7 +52,7 @@ ), _descriptor.FieldDescriptor( name="content_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pt_Performative.content_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_int", index=1, number=2, type=5, @@ -70,7 +70,7 @@ ), _descriptor.FieldDescriptor( name="content_float", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pt_Performative.content_float", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_float", index=2, number=3, type=2, @@ -88,7 +88,7 @@ ), _descriptor.FieldDescriptor( name="content_bool", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pt_Performative.content_bool", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_bool", index=3, number=4, type=8, @@ -106,7 +106,7 @@ ), _descriptor.FieldDescriptor( name="content_str", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pt_Performative.content_str", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_str", index=4, number=5, type=9, @@ -131,20 +131,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=721, - serialized_end=861, + serialized_start=813, + serialized_end=953, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pct_Performative", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_set_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_bytes", index=0, number=1, type=12, @@ -162,7 +162,7 @@ ), _descriptor.FieldDescriptor( name="content_set_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_int", index=1, number=2, type=5, @@ -180,7 +180,7 @@ ), _descriptor.FieldDescriptor( name="content_set_float", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_float", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_float", index=2, number=3, type=2, @@ -198,7 +198,7 @@ ), _descriptor.FieldDescriptor( name="content_set_bool", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_bool", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_bool", index=3, number=4, type=8, @@ -216,7 +216,7 @@ ), _descriptor.FieldDescriptor( name="content_set_str", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_str", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_str", index=4, number=5, type=9, @@ -234,7 +234,7 @@ ), _descriptor.FieldDescriptor( name="content_list_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_bytes", index=5, number=6, type=12, @@ -252,7 +252,7 @@ ), _descriptor.FieldDescriptor( name="content_list_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_int", index=6, number=7, type=5, @@ -270,7 +270,7 @@ ), _descriptor.FieldDescriptor( name="content_list_float", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_float", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_float", index=7, number=8, type=2, @@ -288,7 +288,7 @@ ), _descriptor.FieldDescriptor( name="content_list_bool", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_bool", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_bool", index=8, number=9, type=8, @@ -306,7 +306,7 @@ ), _descriptor.FieldDescriptor( name="content_list_str", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_str", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_str", index=9, number=10, type=9, @@ -331,20 +331,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=864, - serialized_end=1160, + serialized_start=956, + serialized_end=1252, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = _descriptor.Descriptor( name="ContentDictIntBytesEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.key", index=0, number=1, type=5, @@ -362,7 +362,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.value", index=1, number=2, type=12, @@ -387,20 +387,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3201, - serialized_end=3259, + serialized_start=3488, + serialized_end=3546, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = _descriptor.Descriptor( name="ContentDictIntIntEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.key", index=0, number=1, type=5, @@ -418,7 +418,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.value", index=1, number=2, type=5, @@ -443,20 +443,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3261, - serialized_end=3317, + serialized_start=3548, + serialized_end=3604, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = _descriptor.Descriptor( name="ContentDictIntFloatEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.key", index=0, number=1, type=5, @@ -474,7 +474,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.value", index=1, number=2, type=2, @@ -499,20 +499,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3319, - serialized_end=3377, + serialized_start=3606, + serialized_end=3664, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = _descriptor.Descriptor( name="ContentDictIntBoolEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.key", index=0, number=1, type=5, @@ -530,7 +530,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.value", index=1, number=2, type=8, @@ -555,20 +555,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3379, - serialized_end=3436, + serialized_start=3666, + serialized_end=3723, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = _descriptor.Descriptor( name="ContentDictIntStrEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.key", index=0, number=1, type=5, @@ -586,7 +586,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.value", index=1, number=2, type=9, @@ -611,20 +611,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3438, - serialized_end=3494, + serialized_start=3725, + serialized_end=3781, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = _descriptor.Descriptor( name="ContentDictBoolBytesEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.key", index=0, number=1, type=8, @@ -642,7 +642,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.value", index=1, number=2, type=12, @@ -667,20 +667,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3496, - serialized_end=3555, + serialized_start=3783, + serialized_end=3842, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = _descriptor.Descriptor( name="ContentDictBoolIntEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.key", index=0, number=1, type=8, @@ -698,7 +698,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.value", index=1, number=2, type=5, @@ -723,20 +723,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3557, - serialized_end=3614, + serialized_start=3844, + serialized_end=3901, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = _descriptor.Descriptor( name="ContentDictBoolFloatEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.key", index=0, number=1, type=8, @@ -754,7 +754,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.value", index=1, number=2, type=2, @@ -779,20 +779,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3616, - serialized_end=3675, + serialized_start=3903, + serialized_end=3962, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = _descriptor.Descriptor( name="ContentDictBoolBoolEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.key", index=0, number=1, type=8, @@ -810,7 +810,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.value", index=1, number=2, type=8, @@ -835,20 +835,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3677, - serialized_end=3735, + serialized_start=3964, + serialized_end=4022, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = _descriptor.Descriptor( name="ContentDictBoolStrEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.key", index=0, number=1, type=8, @@ -866,7 +866,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.value", index=1, number=2, type=9, @@ -891,20 +891,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3737, - serialized_end=3794, + serialized_start=4024, + serialized_end=4081, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = _descriptor.Descriptor( name="ContentDictStrBytesEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.key", index=0, number=1, type=9, @@ -922,7 +922,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.value", index=1, number=2, type=12, @@ -947,20 +947,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3796, - serialized_end=3854, + serialized_start=4083, + serialized_end=4141, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = _descriptor.Descriptor( name="ContentDictStrIntEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.key", index=0, number=1, type=9, @@ -978,7 +978,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.value", index=1, number=2, type=5, @@ -1003,20 +1003,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3856, - serialized_end=3912, + serialized_start=4143, + serialized_end=4199, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = _descriptor.Descriptor( name="ContentDictStrFloatEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.key", index=0, number=1, type=9, @@ -1034,7 +1034,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.value", index=1, number=2, type=2, @@ -1059,20 +1059,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3914, - serialized_end=3972, + serialized_start=4201, + serialized_end=4259, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = _descriptor.Descriptor( name="ContentDictStrBoolEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.key", index=0, number=1, type=9, @@ -1090,7 +1090,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.value", index=1, number=2, type=8, @@ -1115,20 +1115,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3974, - serialized_end=4031, + serialized_start=4261, + serialized_end=4318, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = _descriptor.Descriptor( name="ContentDictStrStrEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.key", index=0, number=1, type=9, @@ -1146,7 +1146,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.value", index=1, number=2, type=9, @@ -1171,20 +1171,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4033, - serialized_end=4089, + serialized_start=4320, + serialized_end=4376, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pmt_Performative", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_dict_int_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_bytes", index=0, number=1, type=11, @@ -1202,7 +1202,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_int", index=1, number=2, type=11, @@ -1220,7 +1220,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_float", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_float", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_float", index=2, number=3, type=11, @@ -1238,7 +1238,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_bool", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_bool", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_bool", index=3, number=4, type=11, @@ -1256,7 +1256,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_str", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_str", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_str", index=4, number=5, type=11, @@ -1274,7 +1274,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_bytes", index=5, number=6, type=11, @@ -1292,7 +1292,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_int", index=6, number=7, type=11, @@ -1310,7 +1310,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_float", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_float", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_float", index=7, number=8, type=11, @@ -1328,7 +1328,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_bool", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_bool", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_bool", index=8, number=9, type=11, @@ -1346,7 +1346,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_str", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_str", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_str", index=9, number=10, type=11, @@ -1364,7 +1364,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_bytes", index=10, number=11, type=11, @@ -1382,7 +1382,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_int", index=11, number=12, type=11, @@ -1400,7 +1400,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_float", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_float", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_float", index=12, number=13, type=11, @@ -1418,7 +1418,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_bool", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_bool", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_bool", index=13, number=14, type=11, @@ -1436,7 +1436,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_str", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_str", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_str", index=14, number=15, type=11, @@ -1477,20 +1477,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1163, - serialized_end=4089, + serialized_start=1255, + serialized_end=4376, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( name="ContentUnion1TypeDictOfStrIntEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.key", index=0, number=1, type=9, @@ -1508,7 +1508,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.value", index=1, number=2, type=5, @@ -1533,20 +1533,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5281, - serialized_end=5349, + serialized_start=5620, + serialized_end=5688, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfStrIntEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.key", index=0, number=1, type=9, @@ -1564,7 +1564,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.value", index=1, number=2, type=5, @@ -1589,20 +1589,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5351, - serialized_end=5419, + serialized_start=5690, + serialized_end=5758, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfIntFloatEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.key", index=0, number=1, type=5, @@ -1620,7 +1620,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.value", index=1, number=2, type=2, @@ -1645,20 +1645,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5421, - serialized_end=5491, + serialized_start=5760, + serialized_end=5830, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfBoolBytesEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.key", index=0, number=1, type=8, @@ -1676,7 +1676,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.value", index=1, number=2, type=12, @@ -1701,20 +1701,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5493, - serialized_end=5564, + serialized_start=5832, + serialized_end=5903, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Mt_Performative", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_union_1_type_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_bytes", index=0, number=1, type=12, @@ -1732,7 +1732,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_int", index=1, number=2, type=5, @@ -1750,7 +1750,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_float", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_float", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_float", index=2, number=3, type=2, @@ -1768,7 +1768,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_bool", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_bool", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_bool", index=3, number=4, type=8, @@ -1786,7 +1786,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_str", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_str", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_str", index=4, number=5, type=9, @@ -1804,7 +1804,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_set_of_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_set_of_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_set_of_int", index=5, number=6, type=5, @@ -1822,7 +1822,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_list_of_bool", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_list_of_bool", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_list_of_bool", index=6, number=7, type=8, @@ -1840,7 +1840,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_dict_of_str_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_dict_of_str_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_dict_of_str_int", index=7, number=8, type=11, @@ -1858,7 +1858,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_bytes", index=8, number=9, type=12, @@ -1876,7 +1876,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_int", index=9, number=10, type=5, @@ -1894,7 +1894,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_str", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_str", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_str", index=10, number=11, type=9, @@ -1912,7 +1912,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_float", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_float", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_float", index=11, number=12, type=2, @@ -1930,7 +1930,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_bool", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_bool", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_bool", index=12, number=13, type=8, @@ -1948,7 +1948,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_bytes", index=13, number=14, type=12, @@ -1966,7 +1966,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_str_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_str_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_str_int", index=14, number=15, type=11, @@ -1984,7 +1984,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_int_float", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_int_float", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_int_float", index=15, number=16, type=11, @@ -2002,7 +2002,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_bool_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_bool_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_bool_bytes", index=16, number=17, type=11, @@ -2032,20 +2032,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4092, - serialized_end=5564, + serialized_start=4379, + serialized_end=5903, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = _descriptor.Descriptor( name="ContentODictStrIntEntry", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry.key", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry.key", index=0, number=1, type=9, @@ -2063,7 +2063,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry.value", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry.value", index=1, number=2, type=5, @@ -2088,20 +2088,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5952, - serialized_end=6009, + serialized_start=6304, + serialized_end=6361, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _descriptor.Descriptor( name="Performative_O_Performative", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_o_bool", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.content_o_bool", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_bool", index=0, number=1, type=8, @@ -2119,7 +2119,7 @@ ), _descriptor.FieldDescriptor( name="content_o_bool_is_set", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.content_o_bool_is_set", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_bool_is_set", index=1, number=2, type=8, @@ -2137,7 +2137,7 @@ ), _descriptor.FieldDescriptor( name="content_o_set_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.content_o_set_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_set_int", index=2, number=3, type=5, @@ -2155,7 +2155,7 @@ ), _descriptor.FieldDescriptor( name="content_o_set_int_is_set", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.content_o_set_int_is_set", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_set_int_is_set", index=3, number=4, type=8, @@ -2173,7 +2173,7 @@ ), _descriptor.FieldDescriptor( name="content_o_list_bytes", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.content_o_list_bytes", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_list_bytes", index=4, number=5, type=12, @@ -2191,7 +2191,7 @@ ), _descriptor.FieldDescriptor( name="content_o_list_bytes_is_set", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.content_o_list_bytes_is_set", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_list_bytes_is_set", index=5, number=6, type=8, @@ -2209,7 +2209,7 @@ ), _descriptor.FieldDescriptor( name="content_o_dict_str_int", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.content_o_dict_str_int", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_dict_str_int", index=6, number=7, type=11, @@ -2227,7 +2227,7 @@ ), _descriptor.FieldDescriptor( name="content_o_dict_str_int_is_set", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.content_o_dict_str_int_is_set", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_dict_str_int_is_set", index=7, number=8, type=8, @@ -2254,13 +2254,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5567, - serialized_end=6009, + serialized_start=5906, + serialized_end=6361, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Empty_Contents_Performative", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Empty_Contents_Performative", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Empty_Contents_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -2273,20 +2273,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6011, - serialized_end=6053, + serialized_start=6363, + serialized_end=6405, ) _TPROTOCOLNOCTMESSAGE = _descriptor.Descriptor( name="TProtocolNoCtMessage", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="performative_empty_contents", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_empty_contents", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_empty_contents", index=0, number=5, type=11, @@ -2304,7 +2304,7 @@ ), _descriptor.FieldDescriptor( name="performative_mt", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_mt", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_mt", index=1, number=6, type=11, @@ -2322,7 +2322,7 @@ ), _descriptor.FieldDescriptor( name="performative_o", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_o", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_o", index=2, number=7, type=11, @@ -2340,7 +2340,7 @@ ), _descriptor.FieldDescriptor( name="performative_pct", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_pct", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_pct", index=3, number=8, type=11, @@ -2358,7 +2358,7 @@ ), _descriptor.FieldDescriptor( name="performative_pmt", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_pmt", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_pmt", index=4, number=9, type=11, @@ -2376,7 +2376,7 @@ ), _descriptor.FieldDescriptor( name="performative_pt", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative_pt", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_pt", index=5, number=10, type=11, @@ -2410,14 +2410,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.performative", + full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=52, - serialized_end=6069, + serialized_start=65, + serialized_end=6421, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE.containing_type = ( @@ -2657,7 +2657,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pt_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative) ), ), Performative_Pct_Performative=_reflection.GeneratedProtocolMessageType( @@ -2666,7 +2666,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pct_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative) ), ), Performative_Pmt_Performative=_reflection.GeneratedProtocolMessageType( @@ -2679,7 +2679,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) ), ), ContentDictIntIntEntry=_reflection.GeneratedProtocolMessageType( @@ -2688,7 +2688,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) ), ), ContentDictIntFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -2697,7 +2697,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) ), ), ContentDictIntBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -2706,7 +2706,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) ), ), ContentDictIntStrEntry=_reflection.GeneratedProtocolMessageType( @@ -2715,7 +2715,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) ), ), ContentDictBoolBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -2724,7 +2724,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) ), ), ContentDictBoolIntEntry=_reflection.GeneratedProtocolMessageType( @@ -2733,7 +2733,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) ), ), ContentDictBoolFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -2742,7 +2742,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) ), ), ContentDictBoolBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -2751,7 +2751,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) ), ), ContentDictBoolStrEntry=_reflection.GeneratedProtocolMessageType( @@ -2760,7 +2760,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) ), ), ContentDictStrBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -2769,7 +2769,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) ), ), ContentDictStrIntEntry=_reflection.GeneratedProtocolMessageType( @@ -2778,7 +2778,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) ), ), ContentDictStrFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -2787,7 +2787,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) ), ), ContentDictStrBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -2796,7 +2796,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) ), ), ContentDictStrStrEntry=_reflection.GeneratedProtocolMessageType( @@ -2805,12 +2805,12 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) ), ), DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Pmt_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative) ), ), Performative_Mt_Performative=_reflection.GeneratedProtocolMessageType( @@ -2823,7 +2823,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) ), ), ContentUnion2TypeDictOfStrIntEntry=_reflection.GeneratedProtocolMessageType( @@ -2832,7 +2832,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) ), ), ContentUnion2TypeDictOfIntFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -2841,7 +2841,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) ), ), ContentUnion2TypeDictOfBoolBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -2850,12 +2850,12 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) ), ), DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Mt_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative) ), ), Performative_O_Performative=_reflection.GeneratedProtocolMessageType( @@ -2868,12 +2868,12 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry) ), ), DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_O_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative) ), ), Performative_Empty_Contents_Performative=_reflection.GeneratedProtocolMessageType( @@ -2882,12 +2882,12 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage.Performative_Empty_Contents_Performative) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Empty_Contents_Performative) ), ), DESCRIPTOR=_TPROTOCOLNOCTMESSAGE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.TProtocolNoCt.TProtocolNoCtMessage) + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage) ), ) _sym_db.RegisterMessage(TProtocolNoCtMessage) 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 6a466c72a1..b8e7492ab5 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 @@ -101,7 +101,7 @@ def run(): 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:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," + message_text = b"my_agent,other_agent,fetchai/default:0.5.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) 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 ca8dcbd075..fb3fd004a7 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 @@ -59,7 +59,7 @@ def test_run_agent(self): run() assert os.path.exists(Path(self.t, "input_file")) - message_text = b"other_agent,my_agent,fetchai/default:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," + message_text = b"other_agent,my_agent,fetchai/default:0.5.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," path = os.path.join(self.t, "output_file") with open(path, "rb") as file: msg = file.read() 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 85688cd93b..e542e2d4e3 100644 --- a/tests/test_docs/test_build_aea_programmatically/programmatic_aea.py +++ b/tests/test_docs/test_build_aea_programmatically/programmatic_aea.py @@ -97,7 +97,7 @@ def handle(self, message: Message) -> None: 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:0.5.0,\x12H\x08\x01\x12\x011*A\n4type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello," + message_text = b"my_aea,other_agent,fetchai/default:0.5.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) 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 2a09bc65fd..a1f8510479 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 @@ -60,7 +60,7 @@ def test_run_agent(self): assert os.path.exists(Path(self.t, DEFAULT_PRIVATE_KEY_FILE)) message_text_1 = b"other_agent,my_aea,fetchai/default:0.5.0," - message_text_2 = b"type.googleapis.com/fetch.aea.Default.DefaultMessage\x12\t*\x07\n\x05hello" + message_text_2 = b"\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello" path = os.path.join(self.t, "output_file") with open(path, "rb") as file: diff --git a/tests/test_protocols/test_generator/test_generator.py b/tests/test_protocols/test_generator/test_generator.py index c154f0f6d0..94f5b75b2e 100644 --- a/tests/test_protocols/test_generator/test_generator.py +++ b/tests/test_protocols/test_generator/test_generator.py @@ -1204,7 +1204,7 @@ def test_protocol_buffer_schema_str(self): print(proto_buff_schema_str) expected = ( 'syntax = "proto3";\n\n' - "package fetch.aea.SomeName;\n\n" + "package fetchai.aea.some_author.some_name;\n\n" "message SomeNameMessage{\n\n" " // Custom Types\n" " message SomeCustomType{\n" From 011b7c6567ac966b7980bc769cdfc16db67c1e98 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Wed, 2 Sep 2020 00:22:12 +0200 Subject: [PATCH 012/155] update proto namespace to 'fetchai.aea' --- aea/mail/base.proto | 2 +- aea/mail/base_pb2.py | 54 ++++++++++++++++++++++---------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/aea/mail/base.proto b/aea/mail/base.proto index ccc5153af9..668c7a6f89 100644 --- a/aea/mail/base.proto +++ b/aea/mail/base.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea; +package fetchai.aea; import "google/protobuf/struct.proto"; diff --git a/aea/mail/base_pb2.py b/aea/mail/base_pb2.py index 261ffb4f2d..d0599691c6 100644 --- a/aea/mail/base_pb2.py +++ b/aea/mail/base_pb2.py @@ -19,11 +19,11 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="base.proto", - package="fetch.aea", + package="fetchai.aea", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\nbase.proto\x12\tfetch.aea\x1a\x1cgoogle/protobuf/struct.proto"\x90\x01\n\x0f\x44ialogueMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x0f\n\x07\x63ontent\x18\x05 \x01(\x0c"u\n\x07Message\x12\'\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x12\x36\n\x10\x64ialogue_message\x18\x02 \x01(\x0b\x32\x1a.fetch.aea.DialogueMessageH\x00\x42\t\n\x07message"Y\n\x08\x45nvelope\x12\n\n\x02to\x18\x01 \x01(\t\x12\x0e\n\x06sender\x18\x02 \x01(\t\x12\x13\n\x0bprotocol_id\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\x0c\x12\x0b\n\x03uri\x18\x05 \x01(\tb\x06proto3' + '\n\nbase.proto\x12\x0b\x66\x65tchai.aea\x1a\x1cgoogle/protobuf/struct.proto"\x90\x01\n\x0f\x44ialogueMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x0f\n\x07\x63ontent\x18\x05 \x01(\x0c"w\n\x07Message\x12\'\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x12\x38\n\x10\x64ialogue_message\x18\x02 \x01(\x0b\x32\x1c.fetchai.aea.DialogueMessageH\x00\x42\t\n\x07message"Y\n\x08\x45nvelope\x12\n\n\x02to\x18\x01 \x01(\t\x12\x0e\n\x06sender\x18\x02 \x01(\t\x12\x13\n\x0bprotocol_id\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\x0c\x12\x0b\n\x03uri\x18\x05 \x01(\tb\x06proto3' ), dependencies=[google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,], ) @@ -31,14 +31,14 @@ _DIALOGUEMESSAGE = _descriptor.Descriptor( name="DialogueMessage", - full_name="fetch.aea.DialogueMessage", + full_name="fetchai.aea.DialogueMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="message_id", - full_name="fetch.aea.DialogueMessage.message_id", + full_name="fetchai.aea.DialogueMessage.message_id", index=0, number=1, type=5, @@ -56,7 +56,7 @@ ), _descriptor.FieldDescriptor( name="dialogue_starter_reference", - full_name="fetch.aea.DialogueMessage.dialogue_starter_reference", + full_name="fetchai.aea.DialogueMessage.dialogue_starter_reference", index=1, number=2, type=9, @@ -74,7 +74,7 @@ ), _descriptor.FieldDescriptor( name="dialogue_responder_reference", - full_name="fetch.aea.DialogueMessage.dialogue_responder_reference", + full_name="fetchai.aea.DialogueMessage.dialogue_responder_reference", index=2, number=3, type=9, @@ -92,7 +92,7 @@ ), _descriptor.FieldDescriptor( name="target", - full_name="fetch.aea.DialogueMessage.target", + full_name="fetchai.aea.DialogueMessage.target", index=3, number=4, type=5, @@ -110,7 +110,7 @@ ), _descriptor.FieldDescriptor( name="content", - full_name="fetch.aea.DialogueMessage.content", + full_name="fetchai.aea.DialogueMessage.content", index=4, number=5, type=12, @@ -135,21 +135,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=56, - serialized_end=200, + serialized_start=58, + serialized_end=202, ) _MESSAGE = _descriptor.Descriptor( name="Message", - full_name="fetch.aea.Message", + full_name="fetchai.aea.Message", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="body", - full_name="fetch.aea.Message.body", + full_name="fetchai.aea.Message.body", index=0, number=1, type=11, @@ -167,7 +167,7 @@ ), _descriptor.FieldDescriptor( name="dialogue_message", - full_name="fetch.aea.Message.dialogue_message", + full_name="fetchai.aea.Message.dialogue_message", index=1, number=2, type=11, @@ -194,27 +194,27 @@ oneofs=[ _descriptor.OneofDescriptor( name="message", - full_name="fetch.aea.Message.message", + full_name="fetchai.aea.Message.message", index=0, containing_type=None, fields=[], ), ], - serialized_start=202, - serialized_end=319, + serialized_start=204, + serialized_end=323, ) _ENVELOPE = _descriptor.Descriptor( name="Envelope", - full_name="fetch.aea.Envelope", + full_name="fetchai.aea.Envelope", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="to", - full_name="fetch.aea.Envelope.to", + full_name="fetchai.aea.Envelope.to", index=0, number=1, type=9, @@ -232,7 +232,7 @@ ), _descriptor.FieldDescriptor( name="sender", - full_name="fetch.aea.Envelope.sender", + full_name="fetchai.aea.Envelope.sender", index=1, number=2, type=9, @@ -250,7 +250,7 @@ ), _descriptor.FieldDescriptor( name="protocol_id", - full_name="fetch.aea.Envelope.protocol_id", + full_name="fetchai.aea.Envelope.protocol_id", index=2, number=3, type=9, @@ -268,7 +268,7 @@ ), _descriptor.FieldDescriptor( name="message", - full_name="fetch.aea.Envelope.message", + full_name="fetchai.aea.Envelope.message", index=3, number=4, type=12, @@ -286,7 +286,7 @@ ), _descriptor.FieldDescriptor( name="uri", - full_name="fetch.aea.Envelope.uri", + full_name="fetchai.aea.Envelope.uri", index=4, number=5, type=9, @@ -311,8 +311,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=321, - serialized_end=410, + serialized_start=325, + serialized_end=414, ) _MESSAGE.fields_by_name[ @@ -338,7 +338,7 @@ dict( DESCRIPTOR=_DIALOGUEMESSAGE, __module__="base_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.DialogueMessage) + # @@protoc_insertion_point(class_scope:fetchai.aea.DialogueMessage) ), ) _sym_db.RegisterMessage(DialogueMessage) @@ -349,7 +349,7 @@ dict( DESCRIPTOR=_MESSAGE, __module__="base_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Message) + # @@protoc_insertion_point(class_scope:fetchai.aea.Message) ), ) _sym_db.RegisterMessage(Message) @@ -360,7 +360,7 @@ dict( DESCRIPTOR=_ENVELOPE, __module__="base_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Envelope) + # @@protoc_insertion_point(class_scope:fetchai.aea.Envelope) ), ) _sym_db.RegisterMessage(Envelope) From 9e95e2cddb1c1704a8eb977a44673dc46017f73b Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Wed, 2 Sep 2020 07:30:05 +0200 Subject: [PATCH 013/155] fix stub connection with new serialization --- aea/connections/stub/connection.py | 10 +++++----- aea/connections/stub/connection.yaml | 2 +- aea/test_tools/generic.py | 4 ++-- packages/hashes.csv | 2 +- tests/test_connections/test_stub.py | 4 ++-- .../test_programmatic_aea.py | 5 ++--- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/aea/connections/stub/connection.py b/aea/connections/stub/connection.py index 788db20e29..c90e4e8ab5 100644 --- a/aea/connections/stub/connection.py +++ b/aea/connections/stub/connection.py @@ -218,7 +218,7 @@ async def read_envelopes(self) -> None: if self.in_queue is None: # pragma: nocover raise ValueError("Input queue not initialized.") - logger.debug("Read messages!") + self.logger.debug("Read messages!") async for data in self._file_read_and_trunc(delay=self.read_delay): lines = self._split_messages(data) for line in lines: @@ -227,7 +227,7 @@ async def read_envelopes(self) -> None: if envelope is None: continue - logger.debug(f"Add envelope {envelope}") + self.logger.debug(f"Add envelope {envelope}") await self.in_queue.put(envelope) @classmethod @@ -245,13 +245,13 @@ async def receive(self, *args, **kwargs) -> Optional["Envelope"]: """Receive an envelope.""" self._ensure_connected() if self.in_queue is None: # pragma: nocover - logger.error("Input queue not initialized.") + self.logger.error("Input queue not initialized.") return None try: return await self.in_queue.get() except Exception: # pylint: disable=broad-except - logger.exception("Stub connection receive error:") + self.logger.exception("Stub connection receive error:") return None async def connect(self) -> None: @@ -280,7 +280,7 @@ async def _stop_read_envelopes(self) -> None: except CancelledError: pass # task was cancelled, that was expected except BaseException: # pragma: nocover # pylint: disable=broad-except - logger.exception( + self.logger.exception( "during envelop read" ) # do not raise exception cause it's on task stop diff --git a/aea/connections/stub/connection.yaml b/aea/connections/stub/connection.yaml index d6c548ea12..3f359850f7 100644 --- a/aea/connections/stub/connection.yaml +++ b/aea/connections/stub/connection.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: __init__.py: QmWwepN9Fy9gHAp39vUGFSLdnB9JZjdyE3STnbowSUhJkC - connection.py: QmSZTPuYsQk3bfCspG4JBPGMSBuwroDjbe7jLPsgBrDWP7 + connection.py: QmeWnyf1Xn3PxDedNimJaykHv9V5eo7HK1HXefPbygR1cj readme.md: QmXSAtxSY7C2YkvUxeVnpqCJY9uJYZxZBmuUcE4zjFXcXz fingerprint_ignore_patterns: [] protocols: [] diff --git a/aea/test_tools/generic.py b/aea/test_tools/generic.py index 33f741a3ee..74743bdd15 100644 --- a/aea/test_tools/generic.py +++ b/aea/test_tools/generic.py @@ -55,8 +55,8 @@ def read_envelope_from_file(file_path: str): with open(Path(file_path), "rb+") as f: lines.extend(f.readlines()) - enforce(len(lines) == 3, "Did not find three lines.") - line = lines[0] + lines[1] + lines[2] + enforce(len(lines) == 2, "Did not find two lines.") + line = lines[0] + lines[1] to_b, sender_b, protocol_id_b, message, end = line.strip().split(b",", maxsplit=4) to = to_b.decode("utf-8") sender = sender_b.decode("utf-8") diff --git a/packages/hashes.csv b/packages/hashes.csv index b83ae487f2..26c68c8807 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -29,7 +29,7 @@ fetchai/connections/p2p_libp2p_client,QmUoz37dNdoUh5EKbCWpciVgRTvReF9dbqNe4FgGY5 fetchai/connections/p2p_stub,QmX8EWvFok3UAdqXGgir4TrhfDj2kLhfjuXRg82b6G6XtW fetchai/connections/scaffold,QmNUta43nLexAHaXLgmLQYEjntLXSV6MLNvc6Q2CTx7eBS fetchai/connections/soef,QmNq1DsbEtkWqM7EUAQfcdis79PaBhRE2Wn2DriQXc1ykV -fetchai/connections/stub,QmRKtjxXdJoTzYCYitmrdu7kCrjjLbg55Ny7STYp8rvxbD +fetchai/connections/stub,QmPDTnY93sAz5kmWBF1CAsS353opsRG4koMqRoB3bhuStK fetchai/connections/tcp,QmU93B7yajCHwXsgDXXhv1uSuXi7VmFBhdahcFosbrr6nA fetchai/connections/webhook,QmaJunWQT1ypkqGnzrj5gYjjQBywjTHJmyktCZXZsa8hv8 fetchai/contracts/erc1155,QmTSpeW7JJZaBFwyHUbycPg87nUGW3CkkGchFxn6NtshpQ diff --git a/tests/test_connections/test_stub.py b/tests/test_connections/test_stub.py index 52e27758c8..20a7c2339d 100644 --- a/tests/test_connections/test_stub.py +++ b/tests/test_connections/test_stub.py @@ -248,8 +248,8 @@ def test_send_message(self): with open(self.output_file_path, "rb+") as f: lines = f.readlines() - assert len(lines) == 3 - line = lines[0] + lines[1] + lines[2] + assert len(lines) == 2 + line = lines[0] + lines[1] to, sender, protocol_id, message, end = line.strip().split( "{}".format(SEPARATOR).encode("utf-8"), maxsplit=4 ) 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 a1f8510479..acde842251 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 @@ -60,11 +60,10 @@ def test_run_agent(self): assert os.path.exists(Path(self.t, DEFAULT_PRIVATE_KEY_FILE)) message_text_1 = b"other_agent,my_aea,fetchai/default:0.5.0," - message_text_2 = b"\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello" + message_text_2 = b"\t*\x07\n\x05hello" path = os.path.join(self.t, "output_file") - with open(path, "rb") as file: - msg = file.read() + msg = Path(path).read_bytes() assert message_text_1 in msg assert message_text_2 in msg From 08d9bd5509a9d59e63bf57f66f9b4d4d00356fe4 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Wed, 2 Sep 2020 12:12:17 +0200 Subject: [PATCH 014/155] first prototype of 'generate_all_protocols.py' script --- scripts/generate_all_protocols.py | 270 +++++++++++++++++++++++++++--- 1 file changed, 251 insertions(+), 19 deletions(-) diff --git a/scripts/generate_all_protocols.py b/scripts/generate_all_protocols.py index fbcd33a7c9..59e78adebb 100755 --- a/scripts/generate_all_protocols.py +++ b/scripts/generate_all_protocols.py @@ -21,41 +21,273 @@ """ This script takes all the protocol specification (scraped from the protocol README) and calls the `aea generate protocol` command. + +Currently, it does a lot of assumptions, and might not be useful for +all use cases. However, with not much work, can be customized to achieve +the desired outcomes. + +It requires the `aea` package, `black` and `isort` tools. """ +import operator +import os +import pprint +import re +import shutil import subprocess # nosec import sys +import tempfile +from io import StringIO from pathlib import Path +from typing import Optional + +from aea.configurations.base import ComponentType, ProtocolSpecification +from aea.configurations.loader import ConfigLoader, load_component_configuration + +SPECIFICATION_REGEX = re.compile(r"(---\nname.*\.\.\.)", re.DOTALL) +CUSTOM_TYPE_MODULE_NAME = "custom_types.py" +README_FILENAME = "README.md" + +PROTOCOL_PATHS = list( + map( + operator.methodcaller("absolute"), + [ + Path("aea", "protocols", "default"), + Path("aea", "protocols", "signing"), + Path("aea", "protocols", "state_update"), + Path("packages", "fetchai", "protocols", "contract_api"), + Path("packages", "fetchai", "protocols", "fipa"), + Path("packages", "fetchai", "protocols", "gym"), + Path("packages", "fetchai", "protocols", "http"), + Path("packages", "fetchai", "protocols", "ledger_api"), + Path("packages", "fetchai", "protocols", "ml_trade"), + Path("packages", "fetchai", "protocols", "oef_search"), + Path("packages", "fetchai", "protocols", "tac"), + ], + ) +) + + +def assert_(condition, message=""): + """Custom assertion.""" + if not condition: + raise AssertionError(message) + + +def run_cli(*args, **kwargs): + """Run a CLI command.""" + return_code = subprocess.check_call(args, **kwargs) # nosec + assert_( + return_code == 0, + f"Return code of {pprint.pformat(args)} is {return_code} != 0.", + ) + + +def run_aea(*args, **kwargs) -> None: + """ + Run an AEA command. + + :param args: the AEA command + :param kwargs: keyword arguments to subprocess function + :return: None + """ + run_cli(sys.executable, "-m", "aea.cli", *args, **kwargs) + + +class AEAProject(object): + """A context manager class to create and delete an AEA project.""" + + def __init__(self, name: str = "my_aea", parent_dir: Optional[str] = None): + """ + Initialize an AEA project. + + :param name: the name of the AEA project. + """ + self.name = name + self.parent_dir = parent_dir + + def __enter__(self): + """Create and enter into the project.""" + self.old_cwd = os.getcwd() + self.temp_dir = tempfile.mkdtemp(dir=self.parent_dir) + os.chdir(self.temp_dir) + + run_aea("create", self.name) + os.chdir(self.name) + + def __exit__(self, exc_type, exc_val, exc_tb): + """Exit the context manager.""" + os.chdir(self.old_cwd) + shutil.rmtree(self.temp_dir) + + +def _load_protocol_specification_from_string( + specification_content: str, +) -> ProtocolSpecification: + """Load a protocol specification from string.""" + file = StringIO(initial_value=specification_content) + config_loader = ConfigLoader( + "protocol-specification_schema.json", ProtocolSpecification + ) + protocol_spec = config_loader.load_protocol_specification(file) + return protocol_spec + + +def _get_protocol_specification_from_readme(package_path: Path) -> str: + """Get the protocol specification from the package README.""" + readme = package_path / "README.md" + readme_content = readme.read_text() + assert_( + "## Specification" in readme_content, + f"Cannot find specification section in {package_path}", + ) + + search_result = SPECIFICATION_REGEX.search(readme_content) + assert_( + search_result is not None, + f"Cannot find specification section in README of {package_path}", + ) + specification_content = search_result.group(0) + # just for validation of the parsed string + _load_protocol_specification_from_string(specification_content) + return specification_content + +def _save_specification_in_temporary_file(name: str, specification_content: str): + """ + Save the specification in a temporary file. + + :param name: the name of the package. + :param specification_content: the specification content. + :return: None + """ + # here, the cwd is the temporary AEA project + # hence, we are writing in a temporary directory + Path("..", name + ".yaml").write_text(specification_content) + + +def _generate_protocol(package_path: Path) -> None: + """ + Generate the protocol. + + :param package_path: package to the path. + :return: None + """ + run_aea("generate", "protocol", os.path.join("..", package_path.name) + ".yaml") + + +def replace_in_directory(name: str): + """ + Replace text in directory. + + :param name: the protocol name. + :return: None + """ + replace_replacement_pairs = [ + (f"from packages.fetchai.protocols.{name}", f"from aea.protocols.{name}"), + (f"aea.packages.fetchai.protocols.{name}", f"aea.protocols.{name}"), + ] + for submodule in Path("protocols", name).rglob("*.py"): + for to_replace, replacement in replace_replacement_pairs: + if to_replace not in submodule.read_text(): + continue + submodule.write_text(submodule.read_text().replace(to_replace, replacement)) + run_cli("isort", str(submodule)) + + +def _fix_generated_protocol(package_path: Path) -> None: + """ + Fix the generated protocol. -PROTOCOL_PACKAGES_PATH = [ - Path("aea", "protocols", "default"), - Path("aea", "protocols", "signing"), - Path("aea", "protocols", "state_update"), - Path("packages", "fetchai", "protocols", "contract_api"), - Path("packages", "fetchai", "protocols", "fipa"), - Path("packages", "fetchai", "protocols", "gym"), - Path("packages", "fetchai", "protocols", "http"), - Path("packages", "fetchai", "protocols", "ledger_api"), - Path("packages", "fetchai", "protocols", "ml_trade"), - Path("packages", "fetchai", "protocols", "oef_search"), - Path("packages", "fetchai", "protocols", "tac"), -] + That means: + - replacing the prefix of import statements for default protocols; + - restore the original custom types, if any. + - copy the README, if any. + + :param package_path: path to the protocol package. + Used also to recover the protocol name. + :return: None + """ + # restore original custom types. + custom_types_module = package_path / CUSTOM_TYPE_MODULE_NAME + if custom_types_module.exists(): + file_to_replace = Path("protocols", package_path.name, CUSTOM_TYPE_MODULE_NAME) + file_to_replace.write_text(custom_types_module.read_text()) + + # if it is a library protocol, replace import prefixes. + if package_path.parents[1].name == "aea": + replace_in_directory(package_path.name) + + # copy the README + package_readme_file = package_path / README_FILENAME + if package_readme_file.exists(): + shutil.copyfile( + package_readme_file, Path("protocols", package_path.name, README_FILENAME) + ) -def install(package: str) -> int: +def _update_original_protocol(package_path: Path) -> None: """ - Install a PyPI package by calling pip. + Update the original protocol. - :param package: the package name and version specifier. - :return: the return code. + :param package_path: the path to the original package. + Used to recover the protocol name. + :return: None """ - return subprocess.check_call( # nosec - [sys.executable, "-m", "aea", "generate", "protocol", package] + shutil.rmtree(package_path) + shutil.copytree(Path("protocols", package_path.name), package_path) + + +def _fingerprint_protocol(name: str): + """Fingerprint the generated (and modified) protocol.""" + # recover public id. + protocol_config = load_component_configuration( + ComponentType.PROTOCOL, Path("protocols", name), skip_consistency_check=True ) + run_aea("fingerprint", "protocol", str(protocol_config.public_id)) + + +def _process_protocol(package_path: Path) -> None: + """ + Process a protocol package. + + It means: + - extract protocol specification from the README + - generate the protocol in the current AEA project + - fix the generated protocol (e.g. import prefixed, custom types, ...) + - update the original protocol with the newly generated one. + + It assumes the working directory is an AEA project. + + :param package_path: path to the package. + :return: None + """ + specification_content = _get_protocol_specification_from_readme(package_path) + _save_specification_in_temporary_file(package_path.name, specification_content) + _generate_protocol(package_path) + _fix_generated_protocol(package_path) + _fingerprint_protocol(package_path.name) + _update_original_protocol(package_path) + + +def _check_preliminaries(): + """Check that the required software is in place.""" + try: + import aea + except ModuleNotFoundError: + assert_(False, "'aea' package not installed.") + assert_(shutil.which("black") is not None, "black command line tool not found.") + assert_(shutil.which("isort") is not None, "isort command line tool not found.") def main(): """Run the script.""" + _check_preliminaries() + with AEAProject(): + # remove default protocol, since we are going to regenerate it + run_aea("remove", "protocol", "fetchai/default:0.5.0") + + for package_path in PROTOCOL_PATHS: + _process_protocol(package_path) if __name__ == "__main__": From 417c4e74a65520db01e0388177189c55c663eea1 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Wed, 2 Sep 2020 12:12:17 +0200 Subject: [PATCH 015/155] first prototype of 'generate_all_protocols.py' script --- scripts/generate_all_protocols.py | 273 +++++++++++++++++++++++++++--- 1 file changed, 254 insertions(+), 19 deletions(-) diff --git a/scripts/generate_all_protocols.py b/scripts/generate_all_protocols.py index fbcd33a7c9..82de9b6ff9 100755 --- a/scripts/generate_all_protocols.py +++ b/scripts/generate_all_protocols.py @@ -21,41 +21,276 @@ """ This script takes all the protocol specification (scraped from the protocol README) and calls the `aea generate protocol` command. + +Currently, it does a lot of assumptions, and might not be useful for +all use cases. However, with not much work, can be customized to achieve +the desired outcomes. + +It requires the `aea` package, `black` and `isort` tools. """ +import operator +import os +import pprint +import re +import shutil import subprocess # nosec import sys +import tempfile +from io import StringIO from pathlib import Path +from typing import Match, Optional, cast + +from aea.configurations.base import ComponentType, ProtocolSpecification +from aea.configurations.loader import ConfigLoader, load_component_configuration +SPECIFICATION_REGEX = re.compile(r"(---\nname.*\.\.\.)", re.DOTALL) +CUSTOM_TYPE_MODULE_NAME = "custom_types.py" +README_FILENAME = "README.md" + +PROTOCOL_PATHS = list( + map( + operator.methodcaller("absolute"), + [ + Path("aea", "protocols", "default"), + Path("aea", "protocols", "signing"), + Path("aea", "protocols", "state_update"), + Path("packages", "fetchai", "protocols", "contract_api"), + Path("packages", "fetchai", "protocols", "fipa"), + Path("packages", "fetchai", "protocols", "gym"), + Path("packages", "fetchai", "protocols", "http"), + Path("packages", "fetchai", "protocols", "ledger_api"), + Path("packages", "fetchai", "protocols", "ml_trade"), + Path("packages", "fetchai", "protocols", "oef_search"), + Path("packages", "fetchai", "protocols", "tac"), + ], + ) +) -PROTOCOL_PACKAGES_PATH = [ - Path("aea", "protocols", "default"), - Path("aea", "protocols", "signing"), - Path("aea", "protocols", "state_update"), - Path("packages", "fetchai", "protocols", "contract_api"), - Path("packages", "fetchai", "protocols", "fipa"), - Path("packages", "fetchai", "protocols", "gym"), - Path("packages", "fetchai", "protocols", "http"), - Path("packages", "fetchai", "protocols", "ledger_api"), - Path("packages", "fetchai", "protocols", "ml_trade"), - Path("packages", "fetchai", "protocols", "oef_search"), - Path("packages", "fetchai", "protocols", "tac"), -] + +def enforce(condition, message=""): + """Custom assertion.""" + if not condition: + raise AssertionError(message) + + +def run_cli(*args, **kwargs): + """Run a CLI command.""" + return_code = subprocess.check_call(args, **kwargs) # nosec + enforce( + return_code == 0, + f"Return code of {pprint.pformat(args)} is {return_code} != 0.", + ) -def install(package: str) -> int: +def run_aea(*args, **kwargs) -> None: """ - Install a PyPI package by calling pip. + Run an AEA command. - :param package: the package name and version specifier. - :return: the return code. + :param args: the AEA command + :param kwargs: keyword arguments to subprocess function + :return: None """ - return subprocess.check_call( # nosec - [sys.executable, "-m", "aea", "generate", "protocol", package] + run_cli(sys.executable, "-m", "aea.cli", *args, **kwargs) + + +class AEAProject: + """A context manager class to create and delete an AEA project.""" + + old_cwd: str + temp_dir: str + + def __init__(self, name: str = "my_aea", parent_dir: Optional[str] = None): + """ + Initialize an AEA project. + + :param name: the name of the AEA project. + """ + self.name = name + self.parent_dir = parent_dir + + def __enter__(self): + """Create and enter into the project.""" + self.old_cwd = os.getcwd() + self.temp_dir = tempfile.mkdtemp(dir=self.parent_dir) + os.chdir(self.temp_dir) + + run_aea("create", self.name) + os.chdir(self.name) + + def __exit__(self, exc_type, exc_val, exc_tb): + """Exit the context manager.""" + os.chdir(self.old_cwd) + shutil.rmtree(self.temp_dir) + + +def _load_protocol_specification_from_string( + specification_content: str, +) -> ProtocolSpecification: + """Load a protocol specification from string.""" + file = StringIO(initial_value=specification_content) + config_loader = ConfigLoader( + "protocol-specification_schema.json", ProtocolSpecification + ) + protocol_spec = config_loader.load_protocol_specification(file) + return protocol_spec + + +def _get_protocol_specification_from_readme(package_path: Path) -> str: + """Get the protocol specification from the package README.""" + readme = package_path / "README.md" + readme_content = readme.read_text() + enforce( + "## Specification" in readme_content, + f"Cannot find specification section in {package_path}", + ) + + search_result = SPECIFICATION_REGEX.search(readme_content) + enforce( + search_result is not None, + f"Cannot find specification section in README of {package_path}", ) + specification_content = cast(Match, search_result).group(0) + # just for validation of the parsed string + _load_protocol_specification_from_string(specification_content) + return specification_content + + +def _save_specification_in_temporary_file(name: str, specification_content: str): + """ + Save the specification in a temporary file. + + :param name: the name of the package. + :param specification_content: the specification content. + :return: None + """ + # here, the cwd is the temporary AEA project + # hence, we are writing in a temporary directory + Path("..", name + ".yaml").write_text(specification_content) + + +def _generate_protocol(package_path: Path) -> None: + """ + Generate the protocol. + + :param package_path: package to the path. + :return: None + """ + run_aea("generate", "protocol", os.path.join("..", package_path.name) + ".yaml") + + +def replace_in_directory(name: str): + """ + Replace text in directory. + + :param name: the protocol name. + :return: None + """ + replace_replacement_pairs = [ + (f"from packages.fetchai.protocols.{name}", f"from aea.protocols.{name}"), + (f"aea.packages.fetchai.protocols.{name}", f"aea.protocols.{name}"), + ] + for submodule in Path("protocols", name).rglob("*.py"): + for to_replace, replacement in replace_replacement_pairs: + if to_replace not in submodule.read_text(): + continue + submodule.write_text(submodule.read_text().replace(to_replace, replacement)) + run_cli("isort", str(submodule)) + + +def _fix_generated_protocol(package_path: Path) -> None: + """ + Fix the generated protocol. + + That means: + - replacing the prefix of import statements for default protocols; + - restore the original custom types, if any. + - copy the README, if any. + + :param package_path: path to the protocol package. + Used also to recover the protocol name. + :return: None + """ + # restore original custom types. + custom_types_module = package_path / CUSTOM_TYPE_MODULE_NAME + if custom_types_module.exists(): + file_to_replace = Path("protocols", package_path.name, CUSTOM_TYPE_MODULE_NAME) + file_to_replace.write_text(custom_types_module.read_text()) + + # if it is a library protocol, replace import prefixes. + if package_path.parents[1].name == "aea": + replace_in_directory(package_path.name) + + # copy the README + package_readme_file = package_path / README_FILENAME + if package_readme_file.exists(): + shutil.copyfile( + package_readme_file, Path("protocols", package_path.name, README_FILENAME) + ) + + +def _update_original_protocol(package_path: Path) -> None: + """ + Update the original protocol. + + :param package_path: the path to the original package. + Used to recover the protocol name. + :return: None + """ + shutil.rmtree(package_path) + shutil.copytree(Path("protocols", package_path.name), package_path) + + +def _fingerprint_protocol(name: str): + """Fingerprint the generated (and modified) protocol.""" + # recover public id. + protocol_config = load_component_configuration( + ComponentType.PROTOCOL, Path("protocols", name), skip_consistency_check=True + ) + run_aea("fingerprint", "protocol", str(protocol_config.public_id)) + + +def _process_protocol(package_path: Path) -> None: + """ + Process a protocol package. + + It means: + - extract protocol specification from the README + - generate the protocol in the current AEA project + - fix the generated protocol (e.g. import prefixed, custom types, ...) + - update the original protocol with the newly generated one. + + It assumes the working directory is an AEA project. + + :param package_path: path to the package. + :return: None + """ + specification_content = _get_protocol_specification_from_readme(package_path) + _save_specification_in_temporary_file(package_path.name, specification_content) + _generate_protocol(package_path) + _fix_generated_protocol(package_path) + _fingerprint_protocol(package_path.name) + _update_original_protocol(package_path) + + +def _check_preliminaries(): + """Check that the required software is in place.""" + try: + import aea # noqa: F401 # pylint: disable=import-outside-toplevel,unused-import + except ModuleNotFoundError: + enforce(False, "'aea' package not installed.") + enforce(shutil.which("black") is not None, "black command line tool not found.") + enforce(shutil.which("isort") is not None, "isort command line tool not found.") def main(): """Run the script.""" + _check_preliminaries() + with AEAProject(): + # remove default protocol, since we are going to regenerate it + run_aea("remove", "protocol", "fetchai/default:0.5.0") + + for package_path in PROTOCOL_PATHS: + _process_protocol(package_path) if __name__ == "__main__": From 4cd1cff16e3eb25d87d65e27a3d7ed3acda30af1 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Wed, 2 Sep 2020 14:20:38 +0200 Subject: [PATCH 016/155] call black after fixing the protocol --- scripts/generate_all_protocols.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/generate_all_protocols.py b/scripts/generate_all_protocols.py index 82de9b6ff9..f9fd01d099 100755 --- a/scripts/generate_all_protocols.py +++ b/scripts/generate_all_protocols.py @@ -195,6 +195,7 @@ def replace_in_directory(name: str): continue submodule.write_text(submodule.read_text().replace(to_replace, replacement)) run_cli("isort", str(submodule)) + run_cli("black", str(submodule)) def _fix_generated_protocol(package_path: Path) -> None: From 167f4d736e9f17391e283fd9444ee1920f4012e9 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Wed, 2 Sep 2020 14:23:08 +0200 Subject: [PATCH 017/155] update all protocols --- aea/protocols/default/protocol.yaml | 2 +- aea/protocols/default/serialization.py | 6 +- aea/protocols/signing/message.py | 2 +- aea/protocols/signing/protocol.yaml | 8 +- aea/protocols/signing/serialization.py | 49 +- aea/protocols/signing/signing.proto | 7 +- aea/protocols/signing/signing_pb2.py | 358 ++++----- aea/protocols/state_update/message.py | 2 +- aea/protocols/state_update/protocol.yaml | 8 +- aea/protocols/state_update/serialization.py | 35 +- aea/protocols/state_update/state_update.proto | 7 +- .../state_update/state_update_pb2.py | 312 +++---- .../protocols/contract_api/contract_api.proto | 7 +- .../contract_api/contract_api_pb2.py | 448 +++++------ .../protocols/contract_api/protocol.yaml | 6 +- .../protocols/contract_api/serialization.py | 31 +- packages/fetchai/protocols/fipa/fipa.proto | 7 +- packages/fetchai/protocols/fipa/fipa_pb2.py | 436 +++++----- packages/fetchai/protocols/fipa/protocol.yaml | 6 +- .../fetchai/protocols/fipa/serialization.py | 31 +- packages/fetchai/protocols/gym/gym.proto | 7 +- packages/fetchai/protocols/gym/gym_pb2.py | 276 +++---- packages/fetchai/protocols/gym/protocol.yaml | 6 +- .../fetchai/protocols/gym/serialization.py | 31 +- packages/fetchai/protocols/http/http.proto | 7 +- packages/fetchai/protocols/http/http_pb2.py | 182 ++--- packages/fetchai/protocols/http/protocol.yaml | 6 +- .../fetchai/protocols/http/serialization.py | 31 +- .../protocols/ledger_api/ledger_api.proto | 7 +- .../protocols/ledger_api/ledger_api_pb2.py | 422 ++++------ .../protocols/ledger_api/protocol.yaml | 6 +- .../protocols/ledger_api/serialization.py | 31 +- .../fetchai/protocols/ml_trade/ml_trade.proto | 7 +- .../protocols/ml_trade/ml_trade_pb2.py | 270 +++---- .../fetchai/protocols/ml_trade/protocol.yaml | 6 +- .../protocols/ml_trade/serialization.py | 31 +- .../protocols/oef_search/oef_search.proto | 7 +- .../protocols/oef_search/oef_search_pb2.py | 314 +++----- .../protocols/oef_search/protocol.yaml | 6 +- .../protocols/oef_search/serialization.py | 31 +- packages/fetchai/protocols/tac/protocol.yaml | 6 +- .../fetchai/protocols/tac/serialization.py | 31 +- packages/fetchai/protocols/tac/tac.proto | 7 +- packages/fetchai/protocols/tac/tac_pb2.py | 758 ++++++++---------- packages/hashes.csv | 22 +- 45 files changed, 1819 insertions(+), 2457 deletions(-) diff --git a/aea/protocols/default/protocol.yaml b/aea/protocols/default/protocol.yaml index 1878535efc..8d23821b81 100644 --- a/aea/protocols/default/protocol.yaml +++ b/aea/protocols/default/protocol.yaml @@ -13,7 +13,7 @@ fingerprint: default_pb2.py: QmWZGRz16egJBqQVNJ5sN5VEeTSoCq85eJEUqTPqn4caFQ dialogues.py: Qmc991snbS7DwFxo1cKcq1rQ2uj7y8ukp14kfe2zve387C message.py: QmeaadvKib9QqpjZgd7NiDUqGRpC2eZPVpgq1dY3PYacht - serialization.py: QmSXncJHmAzU957A4VSa72yz8H41xBiTLTFSr31NNhBkjQ + serialization.py: QmcRk22hZ49s2HLUNPXBYWTnUkFjuNnVwVWp3yfxfbaQDd fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/aea/protocols/default/serialization.py b/aea/protocols/default/serialization.py index f91b875e99..c5e0ae43a5 100644 --- a/aea/protocols/default/serialization.py +++ b/aea/protocols/default/serialization.py @@ -21,9 +21,9 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from aea.protocols.default import default_pb2 from aea.protocols.default.custom_types import ErrorCode from aea.protocols.default.message import DefaultMessage diff --git a/aea/protocols/signing/message.py b/aea/protocols/signing/message.py index 68a46db489..ea9ef07339 100644 --- a/aea/protocols/signing/message.py +++ b/aea/protocols/signing/message.py @@ -34,7 +34,7 @@ ) from aea.protocols.signing.custom_types import Terms as CustomTerms -logger = logging.getLogger("aea.packages.fetchai.protocols.signing.message") +logger = logging.getLogger("aea.protocols.signing.message") DEFAULT_BODY_SIZE = 4 diff --git a/aea/protocols/signing/protocol.yaml b/aea/protocols/signing/protocol.yaml index 15bf3690d9..8f1d1d4d15 100644 --- a/aea/protocols/signing/protocol.yaml +++ b/aea/protocols/signing/protocol.yaml @@ -10,10 +10,10 @@ fingerprint: __init__.py: QmcCL3TTdvd8wxYKzf2d3cgKEtY9RzLjPCn4hex4wmb6h6 custom_types.py: Qmc7sAyCQbAaVs5dZf9hFkTrB2BG8VAioWzbyKBAybrQ1J dialogues.py: QmQ1WKs3Dn15oDSwpc4N8hdADLxrn76U4X5SiLAmyGiPPY - message.py: QmRLWAYfjCQmdg2hH8R5R63DKYaDrzuX4dVTFqNHuyjawq - serialization.py: QmZrztNBaWA6B5wJHQWfM2g6opPtvsEXtqytzmxjKWm7Sb - signing.proto: QmcxyLzqhTE9xstAEzCVH17osbLxmSdALx9njmuPjhjrvZ - signing_pb2.py: QmY3Ak5ih5zGvKjeZ5EnzrGX4tMYn5dWpjPArQwFeJpVKu + message.py: QmWMUnBpZxBq1PDZ6JsR9vwaKdywBHvL5hghekWeph8j9B + serialization.py: QmT4wm2vP8QUFYCCaCCNNe4kMGgPCsFqkBTvKJFUYDJC4S + signing.proto: QmZEfnzAacy2rtbqZrPUqPBECRDbJPg5GDcZUyiSAah8Kt + signing_pb2.py: QmbZvzqyJWpqttSFwK6wx3gHrrTFiajs2hmFZVsSKFtVZR fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/aea/protocols/signing/serialization.py b/aea/protocols/signing/serialization.py index 88acd2f7a4..f27693b4a5 100644 --- a/aea/protocols/signing/serialization.py +++ b/aea/protocols/signing/serialization.py @@ -21,15 +21,18 @@ from typing import Any, Dict, cast -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from aea.protocols.signing import signing_pb2 -from aea.protocols.signing.custom_types import ErrorCode -from aea.protocols.signing.custom_types import RawMessage -from aea.protocols.signing.custom_types import RawTransaction -from aea.protocols.signing.custom_types import SignedMessage -from aea.protocols.signing.custom_types import SignedTransaction -from aea.protocols.signing.custom_types import Terms +from aea.protocols.signing.custom_types import ( + ErrorCode, + RawMessage, + RawTransaction, + SignedMessage, + SignedTransaction, + Terms, +) from aea.protocols.signing.message import SigningMessage @@ -45,12 +48,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(SigningMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() signing_msg = signing_pb2.SigningMessage() - signing_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - signing_msg.dialogue_starter_reference = dialogue_reference[0] - signing_msg.dialogue_responder_reference = dialogue_reference[1] - signing_msg.target = msg.target + 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 == SigningMessage.Performative.SIGN_TRANSACTION: @@ -87,8 +93,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - signing_bytes = signing_msg.SerializeToString() - return signing_bytes + dialogue_message_pb.content = signing_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -98,15 +107,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'Signing' message. """ + message_pb = ProtobufMessage() signing_pb = signing_pb2.SigningMessage() - signing_pb.ParseFromString(obj) - message_id = signing_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - signing_pb.dialogue_starter_reference, - signing_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = signing_pb.target + target = message_pb.dialogue_message.target + signing_pb.ParseFromString(message_pb.dialogue_message.content) performative = signing_pb.WhichOneof("performative") performative_id = SigningMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/aea/protocols/signing/signing.proto b/aea/protocols/signing/signing.proto index 1d773613b0..730093bc93 100644 --- a/aea/protocols/signing/signing.proto +++ b/aea/protocols/signing/signing.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.Signing; +package fetchai.aea.fetchai.signing; message SigningMessage{ @@ -58,11 +58,6 @@ message SigningMessage{ } - // Standard SigningMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Error_Performative error = 5; Sign_Message_Performative sign_message = 6; diff --git a/aea/protocols/signing/signing_pb2.py b/aea/protocols/signing/signing_pb2.py index f88113b01e..8f83d28cc2 100644 --- a/aea/protocols/signing/signing_pb2.py +++ b/aea/protocols/signing/signing_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: signing.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -14,16 +16,18 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="signing.proto", - package="fetch.aea.Signing", + package="fetchai.aea.fetchai.signing", syntax="proto3", serialized_options=None, - serialized_pb=b"\n\rsigning.proto\x12\x11\x66\x65tch.aea.Signing\"\xa8\x0c\n\x0eSigningMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12\"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x45\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x34.fetch.aea.Signing.SigningMessage.Error_PerformativeH\x00\x12S\n\x0csign_message\x18\x06 \x01(\x0b\x32;.fetch.aea.Signing.SigningMessage.Sign_Message_PerformativeH\x00\x12[\n\x10sign_transaction\x18\x07 \x01(\x0b\x32?.fetch.aea.Signing.SigningMessage.Sign_Transaction_PerformativeH\x00\x12W\n\x0esigned_message\x18\x08 \x01(\x0b\x32=.fetch.aea.Signing.SigningMessage.Signed_Message_PerformativeH\x00\x12_\n\x12signed_transaction\x18\t \x01(\x0b\x32\x41.fetch.aea.Signing.SigningMessage.Signed_Transaction_PerformativeH\x00\x1a\xb3\x01\n\tErrorCode\x12M\n\nerror_code\x18\x01 \x01(\x0e\x32\x39.fetch.aea.Signing.SigningMessage.ErrorCode.ErrorCodeEnum\"W\n\rErrorCodeEnum\x12 \n\x1cUNSUCCESSFUL_MESSAGE_SIGNING\x10\x00\x12$\n UNSUCCESSFUL_TRANSACTION_SIGNING\x10\x01\x1a!\n\nRawMessage\x12\x13\n\x0braw_message\x18\x01 \x01(\x0c\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a'\n\rSignedMessage\x12\x16\n\x0esigned_message\x18\x01 \x01(\x0c\x1a/\n\x11SignedTransaction\x12\x1a\n\x12signed_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05Terms\x12\r\n\x05terms\x18\x01 \x01(\x0c\x1a\xa2\x01\n\x1dSign_Transaction_Performative\x12\x36\n\x05terms\x18\x01 \x01(\x0b\x32'.fetch.aea.Signing.SigningMessage.Terms\x12I\n\x0fraw_transaction\x18\x02 \x01(\x0b\x32\x30.fetch.aea.Signing.SigningMessage.RawTransaction\x1a\x96\x01\n\x19Sign_Message_Performative\x12\x36\n\x05terms\x18\x01 \x01(\x0b\x32'.fetch.aea.Signing.SigningMessage.Terms\x12\x41\n\x0braw_message\x18\x02 \x01(\x0b\x32,.fetch.aea.Signing.SigningMessage.RawMessage\x1ar\n\x1fSigned_Transaction_Performative\x12O\n\x12signed_transaction\x18\x01 \x01(\x0b\x32\x33.fetch.aea.Signing.SigningMessage.SignedTransaction\x1a\x66\n\x1bSigned_Message_Performative\x12G\n\x0esigned_message\x18\x01 \x01(\x0b\x32/.fetch.aea.Signing.SigningMessage.SignedMessage\x1aU\n\x12\x45rror_Performative\x12?\n\nerror_code\x18\x01 \x01(\x0b\x32+.fetch.aea.Signing.SigningMessage.ErrorCodeB\x0e\n\x0cperformativeb\x06proto3", + serialized_pb=_b( + '\n\rsigning.proto\x12\x1b\x66\x65tchai.aea.fetchai.signing"\xbc\x0c\n\x0eSigningMessage\x12O\n\x05\x65rror\x18\x05 \x01(\x0b\x32>.fetchai.aea.fetchai.signing.SigningMessage.Error_PerformativeH\x00\x12]\n\x0csign_message\x18\x06 \x01(\x0b\x32\x45.fetchai.aea.fetchai.signing.SigningMessage.Sign_Message_PerformativeH\x00\x12\x65\n\x10sign_transaction\x18\x07 \x01(\x0b\x32I.fetchai.aea.fetchai.signing.SigningMessage.Sign_Transaction_PerformativeH\x00\x12\x61\n\x0esigned_message\x18\x08 \x01(\x0b\x32G.fetchai.aea.fetchai.signing.SigningMessage.Signed_Message_PerformativeH\x00\x12i\n\x12signed_transaction\x18\t \x01(\x0b\x32K.fetchai.aea.fetchai.signing.SigningMessage.Signed_Transaction_PerformativeH\x00\x1a\xbd\x01\n\tErrorCode\x12W\n\nerror_code\x18\x01 \x01(\x0e\x32\x43.fetchai.aea.fetchai.signing.SigningMessage.ErrorCode.ErrorCodeEnum"W\n\rErrorCodeEnum\x12 \n\x1cUNSUCCESSFUL_MESSAGE_SIGNING\x10\x00\x12$\n UNSUCCESSFUL_TRANSACTION_SIGNING\x10\x01\x1a!\n\nRawMessage\x12\x13\n\x0braw_message\x18\x01 \x01(\x0c\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a\'\n\rSignedMessage\x12\x16\n\x0esigned_message\x18\x01 \x01(\x0c\x1a/\n\x11SignedTransaction\x12\x1a\n\x12signed_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05Terms\x12\r\n\x05terms\x18\x01 \x01(\x0c\x1a\xb6\x01\n\x1dSign_Transaction_Performative\x12@\n\x05terms\x18\x01 \x01(\x0b\x32\x31.fetchai.aea.fetchai.signing.SigningMessage.Terms\x12S\n\x0fraw_transaction\x18\x02 \x01(\x0b\x32:.fetchai.aea.fetchai.signing.SigningMessage.RawTransaction\x1a\xaa\x01\n\x19Sign_Message_Performative\x12@\n\x05terms\x18\x01 \x01(\x0b\x32\x31.fetchai.aea.fetchai.signing.SigningMessage.Terms\x12K\n\x0braw_message\x18\x02 \x01(\x0b\x32\x36.fetchai.aea.fetchai.signing.SigningMessage.RawMessage\x1a|\n\x1fSigned_Transaction_Performative\x12Y\n\x12signed_transaction\x18\x01 \x01(\x0b\x32=.fetchai.aea.fetchai.signing.SigningMessage.SignedTransaction\x1ap\n\x1bSigned_Message_Performative\x12Q\n\x0esigned_message\x18\x01 \x01(\x0b\x32\x39.fetchai.aea.fetchai.signing.SigningMessage.SignedMessage\x1a_\n\x12\x45rror_Performative\x12I\n\nerror_code\x18\x01 \x01(\x0b\x32\x35.fetchai.aea.fetchai.signing.SigningMessage.ErrorCodeB\x0e\n\x0cperformativeb\x06proto3' + ), ) _SIGNINGMESSAGE_ERRORCODE_ERRORCODEENUM = _descriptor.EnumDescriptor( name="ErrorCodeEnum", - full_name="fetch.aea.Signing.SigningMessage.ErrorCode.ErrorCodeEnum", + full_name="fetchai.aea.fetchai.signing.SigningMessage.ErrorCode.ErrorCodeEnum", filename=None, file=DESCRIPTOR, values=[ @@ -44,22 +48,22 @@ ], containing_type=None, serialized_options=None, - serialized_start=693, - serialized_end=780, + serialized_start=653, + serialized_end=740, ) _sym_db.RegisterEnumDescriptor(_SIGNINGMESSAGE_ERRORCODE_ERRORCODEENUM) _SIGNINGMESSAGE_ERRORCODE = _descriptor.Descriptor( name="ErrorCode", - full_name="fetch.aea.Signing.SigningMessage.ErrorCode", + full_name="fetchai.aea.fetchai.signing.SigningMessage.ErrorCode", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetch.aea.Signing.SigningMessage.ErrorCode.error_code", + full_name="fetchai.aea.fetchai.signing.SigningMessage.ErrorCode.error_code", index=0, number=1, type=14, @@ -84,27 +88,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=601, - serialized_end=780, + serialized_start=551, + serialized_end=740, ) _SIGNINGMESSAGE_RAWMESSAGE = _descriptor.Descriptor( name="RawMessage", - full_name="fetch.aea.Signing.SigningMessage.RawMessage", + full_name="fetchai.aea.fetchai.signing.SigningMessage.RawMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_message", - full_name="fetch.aea.Signing.SigningMessage.RawMessage.raw_message", + full_name="fetchai.aea.fetchai.signing.SigningMessage.RawMessage.raw_message", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -122,27 +126,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=782, - serialized_end=815, + serialized_start=742, + serialized_end=775, ) _SIGNINGMESSAGE_RAWTRANSACTION = _descriptor.Descriptor( name="RawTransaction", - full_name="fetch.aea.Signing.SigningMessage.RawTransaction", + full_name="fetchai.aea.fetchai.signing.SigningMessage.RawTransaction", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetch.aea.Signing.SigningMessage.RawTransaction.raw_transaction", + full_name="fetchai.aea.fetchai.signing.SigningMessage.RawTransaction.raw_transaction", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -160,27 +164,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=817, - serialized_end=858, + serialized_start=777, + serialized_end=818, ) _SIGNINGMESSAGE_SIGNEDMESSAGE = _descriptor.Descriptor( name="SignedMessage", - full_name="fetch.aea.Signing.SigningMessage.SignedMessage", + full_name="fetchai.aea.fetchai.signing.SigningMessage.SignedMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_message", - full_name="fetch.aea.Signing.SigningMessage.SignedMessage.signed_message", + full_name="fetchai.aea.fetchai.signing.SigningMessage.SignedMessage.signed_message", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -198,27 +202,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=860, - serialized_end=899, + serialized_start=820, + serialized_end=859, ) _SIGNINGMESSAGE_SIGNEDTRANSACTION = _descriptor.Descriptor( name="SignedTransaction", - full_name="fetch.aea.Signing.SigningMessage.SignedTransaction", + full_name="fetchai.aea.fetchai.signing.SigningMessage.SignedTransaction", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_transaction", - full_name="fetch.aea.Signing.SigningMessage.SignedTransaction.signed_transaction", + full_name="fetchai.aea.fetchai.signing.SigningMessage.SignedTransaction.signed_transaction", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -236,27 +240,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=901, - serialized_end=948, + serialized_start=861, + serialized_end=908, ) _SIGNINGMESSAGE_TERMS = _descriptor.Descriptor( name="Terms", - full_name="fetch.aea.Signing.SigningMessage.Terms", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Terms", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetch.aea.Signing.SigningMessage.Terms.terms", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Terms.terms", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -274,20 +278,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=950, - serialized_end=972, + serialized_start=910, + serialized_end=932, ) _SIGNINGMESSAGE_SIGN_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Sign_Transaction_Performative", - full_name="fetch.aea.Signing.SigningMessage.Sign_Transaction_Performative", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetch.aea.Signing.SigningMessage.Sign_Transaction_Performative.terms", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative.terms", index=0, number=1, type=11, @@ -305,7 +309,7 @@ ), _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetch.aea.Signing.SigningMessage.Sign_Transaction_Performative.raw_transaction", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative.raw_transaction", index=1, number=2, type=11, @@ -330,20 +334,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=975, - serialized_end=1137, + serialized_start=935, + serialized_end=1117, ) _SIGNINGMESSAGE_SIGN_MESSAGE_PERFORMATIVE = _descriptor.Descriptor( name="Sign_Message_Performative", - full_name="fetch.aea.Signing.SigningMessage.Sign_Message_Performative", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Message_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetch.aea.Signing.SigningMessage.Sign_Message_Performative.terms", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Message_Performative.terms", index=0, number=1, type=11, @@ -361,7 +365,7 @@ ), _descriptor.FieldDescriptor( name="raw_message", - full_name="fetch.aea.Signing.SigningMessage.Sign_Message_Performative.raw_message", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Message_Performative.raw_message", index=1, number=2, type=11, @@ -386,20 +390,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1140, + serialized_start=1120, serialized_end=1290, ) _SIGNINGMESSAGE_SIGNED_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Signed_Transaction_Performative", - full_name="fetch.aea.Signing.SigningMessage.Signed_Transaction_Performative", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Signed_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_transaction", - full_name="fetch.aea.Signing.SigningMessage.Signed_Transaction_Performative.signed_transaction", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Signed_Transaction_Performative.signed_transaction", index=0, number=1, type=11, @@ -425,19 +429,19 @@ extension_ranges=[], oneofs=[], serialized_start=1292, - serialized_end=1406, + serialized_end=1416, ) _SIGNINGMESSAGE_SIGNED_MESSAGE_PERFORMATIVE = _descriptor.Descriptor( name="Signed_Message_Performative", - full_name="fetch.aea.Signing.SigningMessage.Signed_Message_Performative", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Signed_Message_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_message", - full_name="fetch.aea.Signing.SigningMessage.Signed_Message_Performative.signed_message", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Signed_Message_Performative.signed_message", index=0, number=1, type=11, @@ -462,20 +466,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1408, - serialized_end=1510, + serialized_start=1418, + serialized_end=1530, ) _SIGNINGMESSAGE_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Error_Performative", - full_name="fetch.aea.Signing.SigningMessage.Error_Performative", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetch.aea.Signing.SigningMessage.Error_Performative.error_code", + full_name="fetchai.aea.fetchai.signing.SigningMessage.Error_Performative.error_code", index=0, number=1, type=11, @@ -500,93 +504,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1512, - serialized_end=1597, + serialized_start=1532, + serialized_end=1627, ) _SIGNINGMESSAGE = _descriptor.Descriptor( name="SigningMessage", - full_name="fetch.aea.Signing.SigningMessage", + full_name="fetchai.aea.fetchai.signing.SigningMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.Signing.SigningMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.Signing.SigningMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.Signing.SigningMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.Signing.SigningMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="error", - full_name="fetch.aea.Signing.SigningMessage.error", - index=4, + full_name="fetchai.aea.fetchai.signing.SigningMessage.error", + index=0, number=5, type=11, cpp_type=10, @@ -603,8 +535,8 @@ ), _descriptor.FieldDescriptor( name="sign_message", - full_name="fetch.aea.Signing.SigningMessage.sign_message", - index=5, + full_name="fetchai.aea.fetchai.signing.SigningMessage.sign_message", + index=1, number=6, type=11, cpp_type=10, @@ -621,8 +553,8 @@ ), _descriptor.FieldDescriptor( name="sign_transaction", - full_name="fetch.aea.Signing.SigningMessage.sign_transaction", - index=6, + full_name="fetchai.aea.fetchai.signing.SigningMessage.sign_transaction", + index=2, number=7, type=11, cpp_type=10, @@ -639,8 +571,8 @@ ), _descriptor.FieldDescriptor( name="signed_message", - full_name="fetch.aea.Signing.SigningMessage.signed_message", - index=7, + full_name="fetchai.aea.fetchai.signing.SigningMessage.signed_message", + index=3, number=8, type=11, cpp_type=10, @@ -657,8 +589,8 @@ ), _descriptor.FieldDescriptor( name="signed_transaction", - full_name="fetch.aea.Signing.SigningMessage.signed_transaction", - index=8, + full_name="fetchai.aea.fetchai.signing.SigningMessage.signed_transaction", + index=4, number=9, type=11, cpp_type=10, @@ -696,14 +628,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.Signing.SigningMessage.performative", + full_name="fetchai.aea.fetchai.signing.SigningMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=37, - serialized_end=1613, + serialized_start=47, + serialized_end=1643, ) _SIGNINGMESSAGE_ERRORCODE.fields_by_name[ @@ -793,110 +725,110 @@ SigningMessage = _reflection.GeneratedProtocolMessageType( "SigningMessage", (_message.Message,), - { - "ErrorCode": _reflection.GeneratedProtocolMessageType( + dict( + ErrorCode=_reflection.GeneratedProtocolMessageType( "ErrorCode", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_ERRORCODE, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.ErrorCode) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_ERRORCODE, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.ErrorCode) + ), ), - "RawMessage": _reflection.GeneratedProtocolMessageType( + RawMessage=_reflection.GeneratedProtocolMessageType( "RawMessage", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_RAWMESSAGE, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.RawMessage) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_RAWMESSAGE, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.RawMessage) + ), ), - "RawTransaction": _reflection.GeneratedProtocolMessageType( + RawTransaction=_reflection.GeneratedProtocolMessageType( "RawTransaction", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_RAWTRANSACTION, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.RawTransaction) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_RAWTRANSACTION, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.RawTransaction) + ), ), - "SignedMessage": _reflection.GeneratedProtocolMessageType( + SignedMessage=_reflection.GeneratedProtocolMessageType( "SignedMessage", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_SIGNEDMESSAGE, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.SignedMessage) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_SIGNEDMESSAGE, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.SignedMessage) + ), ), - "SignedTransaction": _reflection.GeneratedProtocolMessageType( + SignedTransaction=_reflection.GeneratedProtocolMessageType( "SignedTransaction", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_SIGNEDTRANSACTION, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.SignedTransaction) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_SIGNEDTRANSACTION, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.SignedTransaction) + ), ), - "Terms": _reflection.GeneratedProtocolMessageType( + Terms=_reflection.GeneratedProtocolMessageType( "Terms", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_TERMS, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.Terms) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_TERMS, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Terms) + ), ), - "Sign_Transaction_Performative": _reflection.GeneratedProtocolMessageType( + Sign_Transaction_Performative=_reflection.GeneratedProtocolMessageType( "Sign_Transaction_Performative", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_SIGN_TRANSACTION_PERFORMATIVE, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.Sign_Transaction_Performative) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_SIGN_TRANSACTION_PERFORMATIVE, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative) + ), ), - "Sign_Message_Performative": _reflection.GeneratedProtocolMessageType( + Sign_Message_Performative=_reflection.GeneratedProtocolMessageType( "Sign_Message_Performative", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_SIGN_MESSAGE_PERFORMATIVE, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.Sign_Message_Performative) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_SIGN_MESSAGE_PERFORMATIVE, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Sign_Message_Performative) + ), ), - "Signed_Transaction_Performative": _reflection.GeneratedProtocolMessageType( + Signed_Transaction_Performative=_reflection.GeneratedProtocolMessageType( "Signed_Transaction_Performative", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_SIGNED_TRANSACTION_PERFORMATIVE, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.Signed_Transaction_Performative) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_SIGNED_TRANSACTION_PERFORMATIVE, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Signed_Transaction_Performative) + ), ), - "Signed_Message_Performative": _reflection.GeneratedProtocolMessageType( + Signed_Message_Performative=_reflection.GeneratedProtocolMessageType( "Signed_Message_Performative", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_SIGNED_MESSAGE_PERFORMATIVE, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.Signed_Message_Performative) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_SIGNED_MESSAGE_PERFORMATIVE, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Signed_Message_Performative) + ), ), - "Error_Performative": _reflection.GeneratedProtocolMessageType( + Error_Performative=_reflection.GeneratedProtocolMessageType( "Error_Performative", (_message.Message,), - { - "DESCRIPTOR": _SIGNINGMESSAGE_ERROR_PERFORMATIVE, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage.Error_Performative) - }, - ), - "DESCRIPTOR": _SIGNINGMESSAGE, - "__module__": "signing_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Signing.SigningMessage) - }, + dict( + DESCRIPTOR=_SIGNINGMESSAGE_ERROR_PERFORMATIVE, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Error_Performative) + ), + ), + DESCRIPTOR=_SIGNINGMESSAGE, + __module__="signing_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage) + ), ) _sym_db.RegisterMessage(SigningMessage) _sym_db.RegisterMessage(SigningMessage.ErrorCode) diff --git a/aea/protocols/state_update/message.py b/aea/protocols/state_update/message.py index 2444c40c0f..fbec5d3797 100644 --- a/aea/protocols/state_update/message.py +++ b/aea/protocols/state_update/message.py @@ -26,7 +26,7 @@ from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message -logger = logging.getLogger("aea.packages.fetchai.protocols.state_update.message") +logger = logging.getLogger("aea.protocols.state_update.message") DEFAULT_BODY_SIZE = 4 diff --git a/aea/protocols/state_update/protocol.yaml b/aea/protocols/state_update/protocol.yaml index 99162fad2e..7da5c8f6e2 100644 --- a/aea/protocols/state_update/protocol.yaml +++ b/aea/protocols/state_update/protocol.yaml @@ -9,10 +9,10 @@ fingerprint: README.md: Qmc12hnCshAE3TL9ba4vo6L8ZZhynyfhEUoStJggRrbimc __init__.py: Qma2opyN54gwTpkVV1E14jjeMmMfoqgE6XMM9LsvGuTdkm dialogues.py: Qmd59WgpFccLn1zhpLdwm3zDCmCsjSoQXVn6M7PgFwwkgR - message.py: QmbXbxXbu1vzrCjzDy6qDtEvssmiHKFLWGgCEenrE4TPZW - serialization.py: QmQDdbN4pgfdL1LUhV4J7xMUhdqUJ2Tamz7Nheca3yGw2G - state_update.proto: QmdmEUSa7PDxJ98ZmGE7bLFPmUJv8refgbkHPejw6uDdwD - state_update_pb2.py: QmQr5KXhapRv9AnfQe7Xbr5bBqYWp9DEMLjxX8UWmK75Z4 + message.py: Qmc8mnCC1K7yb1CTY3t1RXbktmg54bZ3nXVqq1KQES8jJf + serialization.py: QmS3Tesi18wvwoxjgC4iiqkdJUMAsYSiz8Vq6oHNzr3kxh + state_update.proto: QmWZmuScKgykqijC58nrGrHfd2vDUk1mroEpqGt6UPLjDa + state_update_pb2.py: QmfAy4RWUa3GwsCyEsXK6xJ2jJ2JhbTGRg4wCfrcvviBxS fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/aea/protocols/state_update/serialization.py b/aea/protocols/state_update/serialization.py index b5af452a72..6706ffd26f 100644 --- a/aea/protocols/state_update/serialization.py +++ b/aea/protocols/state_update/serialization.py @@ -21,8 +21,9 @@ from typing import Any, Dict, cast -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from aea.protocols.state_update import state_update_pb2 from aea.protocols.state_update.message import StateUpdateMessage @@ -39,12 +40,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(StateUpdateMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() state_update_msg = state_update_pb2.StateUpdateMessage() - state_update_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - state_update_msg.dialogue_starter_reference = dialogue_reference[0] - state_update_msg.dialogue_responder_reference = dialogue_reference[1] - state_update_msg.target = msg.target + 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 == StateUpdateMessage.Performative.INITIALIZE: @@ -70,8 +74,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - state_update_bytes = state_update_msg.SerializeToString() - return state_update_bytes + dialogue_message_pb.content = state_update_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -81,15 +88,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'StateUpdate' message. """ + message_pb = ProtobufMessage() state_update_pb = state_update_pb2.StateUpdateMessage() - state_update_pb.ParseFromString(obj) - message_id = state_update_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - state_update_pb.dialogue_starter_reference, - state_update_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = state_update_pb.target + target = message_pb.dialogue_message.target + state_update_pb.ParseFromString(message_pb.dialogue_message.content) performative = state_update_pb.WhichOneof("performative") performative_id = StateUpdateMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/aea/protocols/state_update/state_update.proto b/aea/protocols/state_update/state_update.proto index f6540e5c95..272d3f22b1 100644 --- a/aea/protocols/state_update/state_update.proto +++ b/aea/protocols/state_update/state_update.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.StateUpdate; +package fetchai.aea.fetchai.state_update; message StateUpdateMessage{ @@ -18,11 +18,6 @@ message StateUpdateMessage{ } - // Standard StateUpdateMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Apply_Performative apply = 5; Initialize_Performative initialize = 6; diff --git a/aea/protocols/state_update/state_update_pb2.py b/aea/protocols/state_update/state_update_pb2.py index df4c7a4d68..ff4e0e426d 100644 --- a/aea/protocols/state_update/state_update_pb2.py +++ b/aea/protocols/state_update/state_update_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: state_update.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -14,30 +16,32 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="state_update.proto", - package="fetch.aea.StateUpdate", + package="fetchai.aea.fetchai.state_update", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\x12state_update.proto\x12\x15\x66\x65tch.aea.StateUpdate"\xc5\x0b\n\x12StateUpdateMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12M\n\x05\x61pply\x18\x05 \x01(\x0b\x32<.fetch.aea.StateUpdate.StateUpdateMessage.Apply_PerformativeH\x00\x12W\n\ninitialize\x18\x06 \x01(\x0b\x32\x41.fetch.aea.StateUpdate.StateUpdateMessage.Initialize_PerformativeH\x00\x1a\x91\x06\n\x17Initialize_Performative\x12\x89\x01\n\x1e\x65xchange_params_by_currency_id\x18\x01 \x03(\x0b\x32\x61.fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry\x12\x7f\n\x19utility_params_by_good_id\x18\x02 \x03(\x0b\x32\\.fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry\x12x\n\x15\x61mount_by_currency_id\x18\x03 \x03(\x0b\x32Y.fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry\x12x\n\x15quantities_by_good_id\x18\x04 \x03(\x0b\x32Y.fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry\x1a\x41\n\x1f\x45xchangeParamsByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a<\n\x1aUtilityParamsByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\xf4\x02\n\x12\x41pply_Performative\x12s\n\x15\x61mount_by_currency_id\x18\x01 \x03(\x0b\x32T.fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry\x12s\n\x15quantities_by_good_id\x18\x02 \x03(\x0b\x32T.fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\x12state_update.proto\x12 fetchai.aea.fetchai.state_update"\xb2\x0b\n\x12StateUpdateMessage\x12X\n\x05\x61pply\x18\x05 \x01(\x0b\x32G.fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_PerformativeH\x00\x12\x62\n\ninitialize\x18\x06 \x01(\x0b\x32L.fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_PerformativeH\x00\x1a\xc0\x06\n\x17Initialize_Performative\x12\x94\x01\n\x1e\x65xchange_params_by_currency_id\x18\x01 \x03(\x0b\x32l.fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry\x12\x8a\x01\n\x19utility_params_by_good_id\x18\x02 \x03(\x0b\x32g.fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry\x12\x83\x01\n\x15\x61mount_by_currency_id\x18\x03 \x03(\x0b\x32\x64.fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry\x12\x83\x01\n\x15quantities_by_good_id\x18\x04 \x03(\x0b\x32\x64.fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry\x1a\x41\n\x1f\x45xchangeParamsByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a<\n\x1aUtilityParamsByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x8a\x03\n\x12\x41pply_Performative\x12~\n\x15\x61mount_by_currency_id\x18\x01 \x03(\x0b\x32_.fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry\x12~\n\x15quantities_by_good_id\x18\x02 \x03(\x0b\x32_.fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' + ), ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY = _descriptor.Descriptor( name="ExchangeParamsByCurrencyIdEntry", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry.key", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -48,7 +52,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry.value", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry.value", index=1, number=2, type=2, @@ -68,32 +72,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=887, - serialized_end=952, + serialized_start=857, + serialized_end=922, ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY = _descriptor.Descriptor( name="UtilityParamsByGoodIdEntry", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry.key", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -104,7 +108,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry.value", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry.value", index=1, number=2, type=2, @@ -124,32 +128,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=954, - serialized_end=1014, + serialized_start=924, + serialized_end=984, ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _descriptor.Descriptor( name="AmountByCurrencyIdEntry", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry.key", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -160,7 +164,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry.value", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -180,32 +184,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1016, - serialized_end=1073, + serialized_start=986, + serialized_end=1043, ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _descriptor.Descriptor( name="QuantitiesByGoodIdEntry", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry.key", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -216,7 +220,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry.value", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry.value", index=1, number=2, type=5, @@ -236,25 +240,25 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1075, - serialized_end=1132, + serialized_start=1045, + serialized_end=1102, ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE = _descriptor.Descriptor( name="Initialize_Performative", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="exchange_params_by_currency_id", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.exchange_params_by_currency_id", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.exchange_params_by_currency_id", index=0, number=1, type=11, @@ -272,7 +276,7 @@ ), _descriptor.FieldDescriptor( name="utility_params_by_good_id", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.utility_params_by_good_id", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.utility_params_by_good_id", index=1, number=2, type=11, @@ -290,7 +294,7 @@ ), _descriptor.FieldDescriptor( name="amount_by_currency_id", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.amount_by_currency_id", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.amount_by_currency_id", index=2, number=3, type=11, @@ -308,7 +312,7 @@ ), _descriptor.FieldDescriptor( name="quantities_by_good_id", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.quantities_by_good_id", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.quantities_by_good_id", index=3, number=4, type=11, @@ -338,27 +342,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=347, - serialized_end=1132, + serialized_start=270, + serialized_end=1102, ) _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _descriptor.Descriptor( name="AmountByCurrencyIdEntry", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry.key", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -369,7 +373,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry.value", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -389,32 +393,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1016, - serialized_end=1073, + serialized_start=986, + serialized_end=1043, ) _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _descriptor.Descriptor( name="QuantitiesByGoodIdEntry", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry.key", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -425,7 +429,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry.value", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry.value", index=1, number=2, type=5, @@ -445,25 +449,25 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1075, - serialized_end=1132, + serialized_start=1045, + serialized_end=1102, ) _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE = _descriptor.Descriptor( name="Apply_Performative", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="amount_by_currency_id", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.amount_by_currency_id", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.amount_by_currency_id", index=0, number=1, type=11, @@ -481,7 +485,7 @@ ), _descriptor.FieldDescriptor( name="quantities_by_good_id", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.quantities_by_good_id", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.quantities_by_good_id", index=1, number=2, type=11, @@ -509,93 +513,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1135, - serialized_end=1507, + serialized_start=1105, + serialized_end=1499, ) _STATEUPDATEMESSAGE = _descriptor.Descriptor( name="StateUpdateMessage", - full_name="fetch.aea.StateUpdate.StateUpdateMessage", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="apply", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.apply", - index=4, + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.apply", + index=0, number=5, type=11, cpp_type=10, @@ -612,8 +544,8 @@ ), _descriptor.FieldDescriptor( name="initialize", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.initialize", - index=5, + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.initialize", + index=1, number=6, type=11, cpp_type=10, @@ -642,14 +574,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.StateUpdate.StateUpdateMessage.performative", + full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=46, - serialized_end=1523, + serialized_start=57, + serialized_end=1515, ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY.containing_type = ( @@ -716,83 +648,83 @@ StateUpdateMessage = _reflection.GeneratedProtocolMessageType( "StateUpdateMessage", (_message.Message,), - { - "Initialize_Performative": _reflection.GeneratedProtocolMessageType( + dict( + Initialize_Performative=_reflection.GeneratedProtocolMessageType( "Initialize_Performative", (_message.Message,), - { - "ExchangeParamsByCurrencyIdEntry": _reflection.GeneratedProtocolMessageType( + dict( + ExchangeParamsByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( "ExchangeParamsByCurrencyIdEntry", (_message.Message,), - { - "DESCRIPTOR": _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY, - "__module__": "state_update_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry) - }, + dict( + DESCRIPTOR=_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY, + __module__="state_update_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry) + ), ), - "UtilityParamsByGoodIdEntry": _reflection.GeneratedProtocolMessageType( + UtilityParamsByGoodIdEntry=_reflection.GeneratedProtocolMessageType( "UtilityParamsByGoodIdEntry", (_message.Message,), - { - "DESCRIPTOR": _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY, - "__module__": "state_update_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry) - }, + dict( + DESCRIPTOR=_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY, + __module__="state_update_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry) + ), ), - "AmountByCurrencyIdEntry": _reflection.GeneratedProtocolMessageType( + AmountByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( "AmountByCurrencyIdEntry", (_message.Message,), - { - "DESCRIPTOR": _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, - "__module__": "state_update_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry) - }, + dict( + DESCRIPTOR=_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, + __module__="state_update_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry) + ), ), - "QuantitiesByGoodIdEntry": _reflection.GeneratedProtocolMessageType( + QuantitiesByGoodIdEntry=_reflection.GeneratedProtocolMessageType( "QuantitiesByGoodIdEntry", (_message.Message,), - { - "DESCRIPTOR": _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, - "__module__": "state_update_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry) - }, + dict( + DESCRIPTOR=_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, + __module__="state_update_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry) + ), ), - "DESCRIPTOR": _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE, - "__module__": "state_update_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.StateUpdate.StateUpdateMessage.Initialize_Performative) - }, + DESCRIPTOR=_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE, + __module__="state_update_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative) + ), ), - "Apply_Performative": _reflection.GeneratedProtocolMessageType( + Apply_Performative=_reflection.GeneratedProtocolMessageType( "Apply_Performative", (_message.Message,), - { - "AmountByCurrencyIdEntry": _reflection.GeneratedProtocolMessageType( + dict( + AmountByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( "AmountByCurrencyIdEntry", (_message.Message,), - { - "DESCRIPTOR": _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, - "__module__": "state_update_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry) - }, + dict( + DESCRIPTOR=_STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, + __module__="state_update_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry) + ), ), - "QuantitiesByGoodIdEntry": _reflection.GeneratedProtocolMessageType( + QuantitiesByGoodIdEntry=_reflection.GeneratedProtocolMessageType( "QuantitiesByGoodIdEntry", (_message.Message,), - { - "DESCRIPTOR": _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, - "__module__": "state_update_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry) - }, + dict( + DESCRIPTOR=_STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, + __module__="state_update_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry) + ), ), - "DESCRIPTOR": _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE, - "__module__": "state_update_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.StateUpdate.StateUpdateMessage.Apply_Performative) - }, + DESCRIPTOR=_STATEUPDATEMESSAGE_APPLY_PERFORMATIVE, + __module__="state_update_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative) + ), ), - "DESCRIPTOR": _STATEUPDATEMESSAGE, - "__module__": "state_update_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.StateUpdate.StateUpdateMessage) - }, + DESCRIPTOR=_STATEUPDATEMESSAGE, + __module__="state_update_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage) + ), ) _sym_db.RegisterMessage(StateUpdateMessage) _sym_db.RegisterMessage(StateUpdateMessage.Initialize_Performative) diff --git a/packages/fetchai/protocols/contract_api/contract_api.proto b/packages/fetchai/protocols/contract_api/contract_api.proto index 5310d3e98e..f9047445ce 100644 --- a/packages/fetchai/protocols/contract_api/contract_api.proto +++ b/packages/fetchai/protocols/contract_api/contract_api.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.ContractApi; +package fetchai.aea.fetchai.contract_api; message ContractApiMessage{ @@ -71,11 +71,6 @@ message ContractApiMessage{ } - // Standard ContractApiMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Error_Performative error = 5; Get_Deploy_Transaction_Performative get_deploy_transaction = 6; diff --git a/packages/fetchai/protocols/contract_api/contract_api_pb2.py b/packages/fetchai/protocols/contract_api/contract_api_pb2.py index 9e7bd92266..429dcc3ed7 100644 --- a/packages/fetchai/protocols/contract_api/contract_api_pb2.py +++ b/packages/fetchai/protocols/contract_api/contract_api_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: contract_api.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -14,30 +16,32 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="contract_api.proto", - package="fetch.aea.ContractApi", + package="fetchai.aea.fetchai.contract_api", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\x12\x63ontract_api.proto\x12\x15\x66\x65tch.aea.ContractApi"\xeb\x10\n\x12\x43ontractApiMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12M\n\x05\x65rror\x18\x05 \x01(\x0b\x32<.fetch.aea.ContractApi.ContractApiMessage.Error_PerformativeH\x00\x12o\n\x16get_deploy_transaction\x18\x06 \x01(\x0b\x32M.fetch.aea.ContractApi.ContractApiMessage.Get_Deploy_Transaction_PerformativeH\x00\x12\x61\n\x0fget_raw_message\x18\x07 \x01(\x0b\x32\x46.fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Message_PerformativeH\x00\x12i\n\x13get_raw_transaction\x18\x08 \x01(\x0b\x32J.fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Transaction_PerformativeH\x00\x12U\n\tget_state\x18\t \x01(\x0b\x32@.fetch.aea.ContractApi.ContractApiMessage.Get_State_PerformativeH\x00\x12Y\n\x0braw_message\x18\n \x01(\x0b\x32\x42.fetch.aea.ContractApi.ContractApiMessage.Raw_Message_PerformativeH\x00\x12\x61\n\x0fraw_transaction\x18\x0b \x01(\x0b\x32\x46.fetch.aea.ContractApi.ContractApiMessage.Raw_Transaction_PerformativeH\x00\x12M\n\x05state\x18\x0c \x01(\x0b\x32<.fetch.aea.ContractApi.ContractApiMessage.State_PerformativeH\x00\x1a\x18\n\x06Kwargs\x12\x0e\n\x06kwargs\x18\x01 \x01(\x0c\x1a!\n\nRawMessage\x12\x13\n\x0braw_message\x18\x01 \x01(\x0c\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05State\x12\r\n\x05state\x18\x01 \x01(\x0c\x1a\xa1\x01\n#Get_Deploy_Transaction_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x03 \x01(\t\x12@\n\x06kwargs\x18\x04 \x01(\x0b\x32\x30.fetch.aea.ContractApi.ContractApiMessage.Kwargs\x1a\xb8\x01\n Get_Raw_Transaction_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12@\n\x06kwargs\x18\x05 \x01(\x0b\x32\x30.fetch.aea.ContractApi.ContractApiMessage.Kwargs\x1a\xb4\x01\n\x1cGet_Raw_Message_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12@\n\x06kwargs\x18\x05 \x01(\x0b\x32\x30.fetch.aea.ContractApi.ContractApiMessage.Kwargs\x1a\xae\x01\n\x16Get_State_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12@\n\x06kwargs\x18\x05 \x01(\x0b\x32\x30.fetch.aea.ContractApi.ContractApiMessage.Kwargs\x1aT\n\x12State_Performative\x12>\n\x05state\x18\x01 \x01(\x0b\x32/.fetch.aea.ContractApi.ContractApiMessage.State\x1aq\n\x1cRaw_Transaction_Performative\x12Q\n\x0fraw_transaction\x18\x01 \x01(\x0b\x32\x38.fetch.aea.ContractApi.ContractApiMessage.RawTransaction\x1a\x65\n\x18Raw_Message_Performative\x12I\n\x0braw_message\x18\x01 \x01(\x0b\x32\x34.fetch.aea.ContractApi.ContractApiMessage.RawMessage\x1an\n\x12\x45rror_Performative\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x13\n\x0b\x63ode_is_set\x18\x02 \x01(\x08\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x16\n\x0emessage_is_set\x18\x04 \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\x12\x63ontract_api.proto\x12 fetchai.aea.fetchai.contract_api"\xa2\x11\n\x12\x43ontractApiMessage\x12X\n\x05\x65rror\x18\x05 \x01(\x0b\x32G.fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_PerformativeH\x00\x12z\n\x16get_deploy_transaction\x18\x06 \x01(\x0b\x32X.fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_PerformativeH\x00\x12l\n\x0fget_raw_message\x18\x07 \x01(\x0b\x32Q.fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_PerformativeH\x00\x12t\n\x13get_raw_transaction\x18\x08 \x01(\x0b\x32U.fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_PerformativeH\x00\x12`\n\tget_state\x18\t \x01(\x0b\x32K.fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_PerformativeH\x00\x12\x64\n\x0braw_message\x18\n \x01(\x0b\x32M.fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Message_PerformativeH\x00\x12l\n\x0fraw_transaction\x18\x0b \x01(\x0b\x32Q.fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_PerformativeH\x00\x12X\n\x05state\x18\x0c \x01(\x0b\x32G.fetchai.aea.fetchai.contract_api.ContractApiMessage.State_PerformativeH\x00\x1a\x18\n\x06Kwargs\x12\x0e\n\x06kwargs\x18\x01 \x01(\x0c\x1a!\n\nRawMessage\x12\x13\n\x0braw_message\x18\x01 \x01(\x0c\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05State\x12\r\n\x05state\x18\x01 \x01(\x0c\x1a\xac\x01\n#Get_Deploy_Transaction_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x03 \x01(\t\x12K\n\x06kwargs\x18\x04 \x01(\x0b\x32;.fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a\xc3\x01\n Get_Raw_Transaction_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12K\n\x06kwargs\x18\x05 \x01(\x0b\x32;.fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a\xbf\x01\n\x1cGet_Raw_Message_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12K\n\x06kwargs\x18\x05 \x01(\x0b\x32;.fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a\xb9\x01\n\x16Get_State_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12K\n\x06kwargs\x18\x05 \x01(\x0b\x32;.fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a_\n\x12State_Performative\x12I\n\x05state\x18\x01 \x01(\x0b\x32:.fetchai.aea.fetchai.contract_api.ContractApiMessage.State\x1a|\n\x1cRaw_Transaction_Performative\x12\\\n\x0fraw_transaction\x18\x01 \x01(\x0b\x32\x43.fetchai.aea.fetchai.contract_api.ContractApiMessage.RawTransaction\x1ap\n\x18Raw_Message_Performative\x12T\n\x0braw_message\x18\x01 \x01(\x0b\x32?.fetchai.aea.fetchai.contract_api.ContractApiMessage.RawMessage\x1an\n\x12\x45rror_Performative\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x13\n\x0b\x63ode_is_set\x18\x02 \x01(\x08\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x16\n\x0emessage_is_set\x18\x04 \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3' + ), ) _CONTRACTAPIMESSAGE_KWARGS = _descriptor.Descriptor( name="Kwargs", - full_name="fetch.aea.ContractApi.ContractApiMessage.Kwargs", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="kwargs", - full_name="fetch.aea.ContractApi.ContractApiMessage.Kwargs.kwargs", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs.kwargs", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -55,27 +59,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=932, - serialized_end=956, + serialized_start=921, + serialized_end=945, ) _CONTRACTAPIMESSAGE_RAWMESSAGE = _descriptor.Descriptor( name="RawMessage", - full_name="fetch.aea.ContractApi.ContractApiMessage.RawMessage", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.RawMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_message", - full_name="fetch.aea.ContractApi.ContractApiMessage.RawMessage.raw_message", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.RawMessage.raw_message", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -93,27 +97,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=958, - serialized_end=991, + serialized_start=947, + serialized_end=980, ) _CONTRACTAPIMESSAGE_RAWTRANSACTION = _descriptor.Descriptor( name="RawTransaction", - full_name="fetch.aea.ContractApi.ContractApiMessage.RawTransaction", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.RawTransaction", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetch.aea.ContractApi.ContractApiMessage.RawTransaction.raw_transaction", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.RawTransaction.raw_transaction", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -131,27 +135,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=993, - serialized_end=1034, + serialized_start=982, + serialized_end=1023, ) _CONTRACTAPIMESSAGE_STATE = _descriptor.Descriptor( name="State", - full_name="fetch.aea.ContractApi.ContractApiMessage.State", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.State", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="state", - full_name="fetch.aea.ContractApi.ContractApiMessage.State.state", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.State.state", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -169,27 +173,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1036, - serialized_end=1058, + serialized_start=1025, + serialized_end=1047, ) _CONTRACTAPIMESSAGE_GET_DEPLOY_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Get_Deploy_Transaction_Performative", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Deploy_Transaction_Performative", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Deploy_Transaction_Performative.ledger_id", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.ledger_id", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -200,14 +204,14 @@ ), _descriptor.FieldDescriptor( name="contract_id", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Deploy_Transaction_Performative.contract_id", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.contract_id", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -218,14 +222,14 @@ ), _descriptor.FieldDescriptor( name="callable", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Deploy_Transaction_Performative.callable", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.callable", index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -236,7 +240,7 @@ ), _descriptor.FieldDescriptor( name="kwargs", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Deploy_Transaction_Performative.kwargs", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.kwargs", index=3, number=4, type=11, @@ -261,27 +265,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1061, + serialized_start=1050, serialized_end=1222, ) _CONTRACTAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Get_Raw_Transaction_Performative", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Transaction_Performative", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Transaction_Performative.ledger_id", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.ledger_id", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -292,14 +296,14 @@ ), _descriptor.FieldDescriptor( name="contract_id", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Transaction_Performative.contract_id", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.contract_id", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -310,14 +314,14 @@ ), _descriptor.FieldDescriptor( name="contract_address", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Transaction_Performative.contract_address", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.contract_address", index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -328,14 +332,14 @@ ), _descriptor.FieldDescriptor( name="callable", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Transaction_Performative.callable", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.callable", index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -346,7 +350,7 @@ ), _descriptor.FieldDescriptor( name="kwargs", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Transaction_Performative.kwargs", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.kwargs", index=4, number=5, type=11, @@ -372,26 +376,26 @@ extension_ranges=[], oneofs=[], serialized_start=1225, - serialized_end=1409, + serialized_end=1420, ) _CONTRACTAPIMESSAGE_GET_RAW_MESSAGE_PERFORMATIVE = _descriptor.Descriptor( name="Get_Raw_Message_Performative", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Message_Performative", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Message_Performative.ledger_id", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.ledger_id", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -402,14 +406,14 @@ ), _descriptor.FieldDescriptor( name="contract_id", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Message_Performative.contract_id", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.contract_id", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -420,14 +424,14 @@ ), _descriptor.FieldDescriptor( name="contract_address", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Message_Performative.contract_address", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.contract_address", index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -438,14 +442,14 @@ ), _descriptor.FieldDescriptor( name="callable", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Message_Performative.callable", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.callable", index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -456,7 +460,7 @@ ), _descriptor.FieldDescriptor( name="kwargs", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Message_Performative.kwargs", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.kwargs", index=4, number=5, type=11, @@ -481,27 +485,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1412, - serialized_end=1592, + serialized_start=1423, + serialized_end=1614, ) _CONTRACTAPIMESSAGE_GET_STATE_PERFORMATIVE = _descriptor.Descriptor( name="Get_State_Performative", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_State_Performative", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_State_Performative.ledger_id", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.ledger_id", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -512,14 +516,14 @@ ), _descriptor.FieldDescriptor( name="contract_id", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_State_Performative.contract_id", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.contract_id", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -530,14 +534,14 @@ ), _descriptor.FieldDescriptor( name="contract_address", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_State_Performative.contract_address", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.contract_address", index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -548,14 +552,14 @@ ), _descriptor.FieldDescriptor( name="callable", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_State_Performative.callable", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.callable", index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -566,7 +570,7 @@ ), _descriptor.FieldDescriptor( name="kwargs", - full_name="fetch.aea.ContractApi.ContractApiMessage.Get_State_Performative.kwargs", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.kwargs", index=4, number=5, type=11, @@ -591,20 +595,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1595, - serialized_end=1769, + serialized_start=1617, + serialized_end=1802, ) _CONTRACTAPIMESSAGE_STATE_PERFORMATIVE = _descriptor.Descriptor( name="State_Performative", - full_name="fetch.aea.ContractApi.ContractApiMessage.State_Performative", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.State_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="state", - full_name="fetch.aea.ContractApi.ContractApiMessage.State_Performative.state", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.State_Performative.state", index=0, number=1, type=11, @@ -629,20 +633,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1771, - serialized_end=1855, + serialized_start=1804, + serialized_end=1899, ) _CONTRACTAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Raw_Transaction_Performative", - full_name="fetch.aea.ContractApi.ContractApiMessage.Raw_Transaction_Performative", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetch.aea.ContractApi.ContractApiMessage.Raw_Transaction_Performative.raw_transaction", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_Performative.raw_transaction", index=0, number=1, type=11, @@ -667,20 +671,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1857, - serialized_end=1970, + serialized_start=1901, + serialized_end=2025, ) _CONTRACTAPIMESSAGE_RAW_MESSAGE_PERFORMATIVE = _descriptor.Descriptor( name="Raw_Message_Performative", - full_name="fetch.aea.ContractApi.ContractApiMessage.Raw_Message_Performative", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Message_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_message", - full_name="fetch.aea.ContractApi.ContractApiMessage.Raw_Message_Performative.raw_message", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Message_Performative.raw_message", index=0, number=1, type=11, @@ -705,20 +709,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1972, - serialized_end=2073, + serialized_start=2027, + serialized_end=2139, ) _CONTRACTAPIMESSAGE_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Error_Performative", - full_name="fetch.aea.ContractApi.ContractApiMessage.Error_Performative", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="code", - full_name="fetch.aea.ContractApi.ContractApiMessage.Error_Performative.code", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative.code", index=0, number=1, type=5, @@ -736,7 +740,7 @@ ), _descriptor.FieldDescriptor( name="code_is_set", - full_name="fetch.aea.ContractApi.ContractApiMessage.Error_Performative.code_is_set", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative.code_is_set", index=1, number=2, type=8, @@ -754,14 +758,14 @@ ), _descriptor.FieldDescriptor( name="message", - full_name="fetch.aea.ContractApi.ContractApiMessage.Error_Performative.message", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative.message", index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -772,7 +776,7 @@ ), _descriptor.FieldDescriptor( name="message_is_set", - full_name="fetch.aea.ContractApi.ContractApiMessage.Error_Performative.message_is_set", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative.message_is_set", index=3, number=4, type=8, @@ -790,14 +794,14 @@ ), _descriptor.FieldDescriptor( name="data", - full_name="fetch.aea.ContractApi.ContractApiMessage.Error_Performative.data", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative.data", index=4, number=5, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -815,93 +819,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=2075, - serialized_end=2185, + serialized_start=2141, + serialized_end=2251, ) _CONTRACTAPIMESSAGE = _descriptor.Descriptor( name="ContractApiMessage", - full_name="fetch.aea.ContractApi.ContractApiMessage", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.ContractApi.ContractApiMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.ContractApi.ContractApiMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.ContractApi.ContractApiMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.ContractApi.ContractApiMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="error", - full_name="fetch.aea.ContractApi.ContractApiMessage.error", - index=4, + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.error", + index=0, number=5, type=11, cpp_type=10, @@ -918,8 +850,8 @@ ), _descriptor.FieldDescriptor( name="get_deploy_transaction", - full_name="fetch.aea.ContractApi.ContractApiMessage.get_deploy_transaction", - index=5, + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.get_deploy_transaction", + index=1, number=6, type=11, cpp_type=10, @@ -936,8 +868,8 @@ ), _descriptor.FieldDescriptor( name="get_raw_message", - full_name="fetch.aea.ContractApi.ContractApiMessage.get_raw_message", - index=6, + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.get_raw_message", + index=2, number=7, type=11, cpp_type=10, @@ -954,8 +886,8 @@ ), _descriptor.FieldDescriptor( name="get_raw_transaction", - full_name="fetch.aea.ContractApi.ContractApiMessage.get_raw_transaction", - index=7, + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.get_raw_transaction", + index=3, number=8, type=11, cpp_type=10, @@ -972,8 +904,8 @@ ), _descriptor.FieldDescriptor( name="get_state", - full_name="fetch.aea.ContractApi.ContractApiMessage.get_state", - index=8, + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.get_state", + index=4, number=9, type=11, cpp_type=10, @@ -990,8 +922,8 @@ ), _descriptor.FieldDescriptor( name="raw_message", - full_name="fetch.aea.ContractApi.ContractApiMessage.raw_message", - index=9, + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.raw_message", + index=5, number=10, type=11, cpp_type=10, @@ -1008,8 +940,8 @@ ), _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetch.aea.ContractApi.ContractApiMessage.raw_transaction", - index=10, + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.raw_transaction", + index=6, number=11, type=11, cpp_type=10, @@ -1026,8 +958,8 @@ ), _descriptor.FieldDescriptor( name="state", - full_name="fetch.aea.ContractApi.ContractApiMessage.state", - index=11, + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.state", + index=7, number=12, type=11, cpp_type=10, @@ -1066,14 +998,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.ContractApi.ContractApiMessage.performative", + full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=46, - serialized_end=2201, + serialized_start=57, + serialized_end=2267, ) _CONTRACTAPIMESSAGE_KWARGS.containing_type = _CONTRACTAPIMESSAGE @@ -1191,119 +1123,119 @@ ContractApiMessage = _reflection.GeneratedProtocolMessageType( "ContractApiMessage", (_message.Message,), - { - "Kwargs": _reflection.GeneratedProtocolMessageType( + dict( + Kwargs=_reflection.GeneratedProtocolMessageType( "Kwargs", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_KWARGS, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.Kwargs) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_KWARGS, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs) + ), ), - "RawMessage": _reflection.GeneratedProtocolMessageType( + RawMessage=_reflection.GeneratedProtocolMessageType( "RawMessage", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_RAWMESSAGE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.RawMessage) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_RAWMESSAGE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.RawMessage) + ), ), - "RawTransaction": _reflection.GeneratedProtocolMessageType( + RawTransaction=_reflection.GeneratedProtocolMessageType( "RawTransaction", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_RAWTRANSACTION, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.RawTransaction) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_RAWTRANSACTION, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.RawTransaction) + ), ), - "State": _reflection.GeneratedProtocolMessageType( + State=_reflection.GeneratedProtocolMessageType( "State", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_STATE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.State) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_STATE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.State) + ), ), - "Get_Deploy_Transaction_Performative": _reflection.GeneratedProtocolMessageType( + Get_Deploy_Transaction_Performative=_reflection.GeneratedProtocolMessageType( "Get_Deploy_Transaction_Performative", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_GET_DEPLOY_TRANSACTION_PERFORMATIVE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.Get_Deploy_Transaction_Performative) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_GET_DEPLOY_TRANSACTION_PERFORMATIVE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative) + ), ), - "Get_Raw_Transaction_Performative": _reflection.GeneratedProtocolMessageType( + Get_Raw_Transaction_Performative=_reflection.GeneratedProtocolMessageType( "Get_Raw_Transaction_Performative", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Transaction_Performative) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative) + ), ), - "Get_Raw_Message_Performative": _reflection.GeneratedProtocolMessageType( + Get_Raw_Message_Performative=_reflection.GeneratedProtocolMessageType( "Get_Raw_Message_Performative", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_GET_RAW_MESSAGE_PERFORMATIVE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.Get_Raw_Message_Performative) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_GET_RAW_MESSAGE_PERFORMATIVE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative) + ), ), - "Get_State_Performative": _reflection.GeneratedProtocolMessageType( + Get_State_Performative=_reflection.GeneratedProtocolMessageType( "Get_State_Performative", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_GET_STATE_PERFORMATIVE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.Get_State_Performative) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_GET_STATE_PERFORMATIVE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative) + ), ), - "State_Performative": _reflection.GeneratedProtocolMessageType( + State_Performative=_reflection.GeneratedProtocolMessageType( "State_Performative", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_STATE_PERFORMATIVE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.State_Performative) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_STATE_PERFORMATIVE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.State_Performative) + ), ), - "Raw_Transaction_Performative": _reflection.GeneratedProtocolMessageType( + Raw_Transaction_Performative=_reflection.GeneratedProtocolMessageType( "Raw_Transaction_Performative", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.Raw_Transaction_Performative) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_Performative) + ), ), - "Raw_Message_Performative": _reflection.GeneratedProtocolMessageType( + Raw_Message_Performative=_reflection.GeneratedProtocolMessageType( "Raw_Message_Performative", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_RAW_MESSAGE_PERFORMATIVE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.Raw_Message_Performative) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_RAW_MESSAGE_PERFORMATIVE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Message_Performative) + ), ), - "Error_Performative": _reflection.GeneratedProtocolMessageType( + Error_Performative=_reflection.GeneratedProtocolMessageType( "Error_Performative", (_message.Message,), - { - "DESCRIPTOR": _CONTRACTAPIMESSAGE_ERROR_PERFORMATIVE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage.Error_Performative) - }, + dict( + DESCRIPTOR=_CONTRACTAPIMESSAGE_ERROR_PERFORMATIVE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative) + ), ), - "DESCRIPTOR": _CONTRACTAPIMESSAGE, - "__module__": "contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.ContractApi.ContractApiMessage) - }, + DESCRIPTOR=_CONTRACTAPIMESSAGE, + __module__="contract_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage) + ), ) _sym_db.RegisterMessage(ContractApiMessage) _sym_db.RegisterMessage(ContractApiMessage.Kwargs) diff --git a/packages/fetchai/protocols/contract_api/protocol.yaml b/packages/fetchai/protocols/contract_api/protocol.yaml index d7e4b38e56..dfb9fb6ccd 100644 --- a/packages/fetchai/protocols/contract_api/protocol.yaml +++ b/packages/fetchai/protocols/contract_api/protocol.yaml @@ -8,12 +8,12 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmZv8BvQ1EqbbsF2QjgwSuAv1EDra5bAZzpSWrztm5Gn1s __init__.py: QmZodYjNqoMgGAGKfkCU4zU9t1Cx9MAownqSy4wyVdwaHF - contract_api.proto: QmNwngtcYFSuqL8yeTGVXmrHjfebCybdUa9BnTDKXn8odk - contract_api_pb2.py: QmVT6Fv53KyFhshNFEo38seHypd7Y62psBaF8NszV8iRHK + contract_api.proto: QmNMLYVPSUYhA8Aao92Rytk7Ftfc3JVXHCx1b28jXnJUds + contract_api_pb2.py: QmYUwtxum9CTZheibHguakuGYJCcZcu9Cphy9EwWXQBN2x custom_types.py: Qmd86SMkJeASh8xvpNV9GTq1rGKs7Qjbj97UfbENEbd5AM dialogues.py: QmTjXH8JUtziUFDawKsSTYE5dxn1n1FmMPeWexyxiPYd6k message.py: QmfVtxSae81BNSmhcd5qTH6o8BMaRjtYAqfG6sCAH7m1Cu - serialization.py: QmdJZ6GBrURgzJCfYSZzLhWirfm5bDJxumz7ieAELC9juw + serialization.py: QmUKAwH9Jw66JnbZLwm5HZ4gvV8hmtFg8s2tfPkiKSnLir fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/contract_api/serialization.py b/packages/fetchai/protocols/contract_api/serialization.py index fa94eb9382..12ff18ffb6 100644 --- a/packages/fetchai/protocols/contract_api/serialization.py +++ b/packages/fetchai/protocols/contract_api/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer @@ -44,12 +45,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(ContractApiMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() contract_api_msg = contract_api_pb2.ContractApiMessage() - contract_api_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - contract_api_msg.dialogue_starter_reference = dialogue_reference[0] - contract_api_msg.dialogue_responder_reference = dialogue_reference[1] - contract_api_msg.target = msg.target + 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 == ContractApiMessage.Performative.GET_DEPLOY_TRANSACTION: @@ -133,8 +137,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - contract_api_bytes = contract_api_msg.SerializeToString() - return contract_api_bytes + dialogue_message_pb.content = contract_api_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -144,15 +151,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'ContractApi' message. """ + message_pb = ProtobufMessage() contract_api_pb = contract_api_pb2.ContractApiMessage() - contract_api_pb.ParseFromString(obj) - message_id = contract_api_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - contract_api_pb.dialogue_starter_reference, - contract_api_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = contract_api_pb.target + target = message_pb.dialogue_message.target + contract_api_pb.ParseFromString(message_pb.dialogue_message.content) performative = contract_api_pb.WhichOneof("performative") performative_id = ContractApiMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/packages/fetchai/protocols/fipa/fipa.proto b/packages/fetchai/protocols/fipa/fipa.proto index ac28045bd8..e5c7d985d3 100644 --- a/packages/fetchai/protocols/fipa/fipa.proto +++ b/packages/fetchai/protocols/fipa/fipa.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.Fipa; +package fetchai.aea.fetchai.fipa; message FipaMessage{ @@ -48,11 +48,6 @@ message FipaMessage{ message Match_Accept_Performative{} - // Standard FipaMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Accept_Performative accept = 5; Accept_W_Inform_Performative accept_w_inform = 6; diff --git a/packages/fetchai/protocols/fipa/fipa_pb2.py b/packages/fetchai/protocols/fipa/fipa_pb2.py index 6d966115f3..ba5ed0d17c 100644 --- a/packages/fetchai/protocols/fipa/fipa_pb2.py +++ b/packages/fetchai/protocols/fipa/fipa_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: fipa.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -14,30 +16,32 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="fipa.proto", - package="fetch.aea.Fipa", + package="fetchai.aea.fetchai.fipa", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\nfipa.proto\x12\x0e\x66\x65tch.aea.Fipa"\xc4\x0c\n\x0b\x46ipaMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x41\n\x06\x61\x63\x63\x65pt\x18\x05 \x01(\x0b\x32/.fetch.aea.Fipa.FipaMessage.Accept_PerformativeH\x00\x12S\n\x0f\x61\x63\x63\x65pt_w_inform\x18\x06 \x01(\x0b\x32\x38.fetch.aea.Fipa.FipaMessage.Accept_W_Inform_PerformativeH\x00\x12;\n\x03\x63\x66p\x18\x07 \x01(\x0b\x32,.fetch.aea.Fipa.FipaMessage.Cfp_PerformativeH\x00\x12\x43\n\x07\x64\x65\x63line\x18\x08 \x01(\x0b\x32\x30.fetch.aea.Fipa.FipaMessage.Decline_PerformativeH\x00\x12\x41\n\x06inform\x18\t \x01(\x0b\x32/.fetch.aea.Fipa.FipaMessage.Inform_PerformativeH\x00\x12M\n\x0cmatch_accept\x18\n \x01(\x0b\x32\x35.fetch.aea.Fipa.FipaMessage.Match_Accept_PerformativeH\x00\x12_\n\x15match_accept_w_inform\x18\x0b \x01(\x0b\x32>.fetch.aea.Fipa.FipaMessage.Match_Accept_W_Inform_PerformativeH\x00\x12\x43\n\x07propose\x18\x0c \x01(\x0b\x32\x30.fetch.aea.Fipa.FipaMessage.Propose_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\x81\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12<\n\x07nothing\x18\x02 \x01(\x0b\x32).fetch.aea.Fipa.FipaMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1a\x44\n\x10\x43\x66p_Performative\x12\x30\n\x05query\x18\x01 \x01(\x0b\x32!.fetch.aea.Fipa.FipaMessage.Query\x1aQ\n\x14Propose_Performative\x12\x39\n\x08proposal\x18\x01 \x01(\x0b\x32\'.fetch.aea.Fipa.FipaMessage.Description\x1a\x9d\x01\n\x1c\x41\x63\x63\x65pt_W_Inform_Performative\x12P\n\x04info\x18\x01 \x03(\x0b\x32\x42.fetch.aea.Fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xa9\x01\n"Match_Accept_W_Inform_Performative\x12V\n\x04info\x18\x01 \x03(\x0b\x32H.fetch.aea.Fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x8b\x01\n\x13Inform_Performative\x12G\n\x04info\x18\x01 \x03(\x0b\x32\x39.fetch.aea.Fipa.FipaMessage.Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x15\n\x13\x41\x63\x63\x65pt_Performative\x1a\x16\n\x14\x44\x65\x63line_Performative\x1a\x1b\n\x19Match_Accept_PerformativeB\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\nfipa.proto\x12\x18\x66\x65tchai.aea.fetchai.fipa"\xe2\x0c\n\x0b\x46ipaMessage\x12K\n\x06\x61\x63\x63\x65pt\x18\x05 \x01(\x0b\x32\x39.fetchai.aea.fetchai.fipa.FipaMessage.Accept_PerformativeH\x00\x12]\n\x0f\x61\x63\x63\x65pt_w_inform\x18\x06 \x01(\x0b\x32\x42.fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_PerformativeH\x00\x12\x45\n\x03\x63\x66p\x18\x07 \x01(\x0b\x32\x36.fetchai.aea.fetchai.fipa.FipaMessage.Cfp_PerformativeH\x00\x12M\n\x07\x64\x65\x63line\x18\x08 \x01(\x0b\x32:.fetchai.aea.fetchai.fipa.FipaMessage.Decline_PerformativeH\x00\x12K\n\x06inform\x18\t \x01(\x0b\x32\x39.fetchai.aea.fetchai.fipa.FipaMessage.Inform_PerformativeH\x00\x12W\n\x0cmatch_accept\x18\n \x01(\x0b\x32?.fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_PerformativeH\x00\x12i\n\x15match_accept_w_inform\x18\x0b \x01(\x0b\x32H.fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_PerformativeH\x00\x12M\n\x07propose\x18\x0c \x01(\x0b\x32:.fetchai.aea.fetchai.fipa.FipaMessage.Propose_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\x8b\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12\x46\n\x07nothing\x18\x02 \x01(\x0b\x32\x33.fetchai.aea.fetchai.fipa.FipaMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1aN\n\x10\x43\x66p_Performative\x12:\n\x05query\x18\x01 \x01(\x0b\x32+.fetchai.aea.fetchai.fipa.FipaMessage.Query\x1a[\n\x14Propose_Performative\x12\x43\n\x08proposal\x18\x01 \x01(\x0b\x32\x31.fetchai.aea.fetchai.fipa.FipaMessage.Description\x1a\xa7\x01\n\x1c\x41\x63\x63\x65pt_W_Inform_Performative\x12Z\n\x04info\x18\x01 \x03(\x0b\x32L.fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xb3\x01\n"Match_Accept_W_Inform_Performative\x12`\n\x04info\x18\x01 \x03(\x0b\x32R.fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x95\x01\n\x13Inform_Performative\x12Q\n\x04info\x18\x01 \x03(\x0b\x32\x43.fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x15\n\x13\x41\x63\x63\x65pt_Performative\x1a\x16\n\x14\x44\x65\x63line_Performative\x1a\x1b\n\x19Match_Accept_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + ), ) _FIPAMESSAGE_DESCRIPTION = _descriptor.Descriptor( name="Description", - full_name="fetch.aea.Fipa.FipaMessage.Description", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Description", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="description", - full_name="fetch.aea.Fipa.FipaMessage.Description.description", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Description.description", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -55,13 +59,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=750, - serialized_end=784, + serialized_start=730, + serialized_end=764, ) _FIPAMESSAGE_QUERY_NOTHING = _descriptor.Descriptor( name="Nothing", - full_name="fetch.aea.Fipa.FipaMessage.Query.Nothing", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query.Nothing", filename=None, file=DESCRIPTOR, containing_type=None, @@ -74,27 +78,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=898, - serialized_end=907, + serialized_start=888, + serialized_end=897, ) _FIPAMESSAGE_QUERY = _descriptor.Descriptor( name="Query", - full_name="fetch.aea.Fipa.FipaMessage.Query", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="bytes", - full_name="fetch.aea.Fipa.FipaMessage.Query.bytes", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query.bytes", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -105,7 +109,7 @@ ), _descriptor.FieldDescriptor( name="nothing", - full_name="fetch.aea.Fipa.FipaMessage.Query.nothing", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query.nothing", index=1, number=2, type=11, @@ -123,14 +127,14 @@ ), _descriptor.FieldDescriptor( name="query_bytes", - full_name="fetch.aea.Fipa.FipaMessage.Query.query_bytes", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query.query_bytes", index=2, number=3, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -150,26 +154,26 @@ oneofs=[ _descriptor.OneofDescriptor( name="query", - full_name="fetch.aea.Fipa.FipaMessage.Query.query", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query.query", index=0, containing_type=None, fields=[], ), ], - serialized_start=787, - serialized_end=916, + serialized_start=767, + serialized_end=906, ) _FIPAMESSAGE_CFP_PERFORMATIVE = _descriptor.Descriptor( name="Cfp_Performative", - full_name="fetch.aea.Fipa.FipaMessage.Cfp_Performative", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Cfp_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="query", - full_name="fetch.aea.Fipa.FipaMessage.Cfp_Performative.query", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Cfp_Performative.query", index=0, number=1, type=11, @@ -194,20 +198,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=918, + serialized_start=908, serialized_end=986, ) _FIPAMESSAGE_PROPOSE_PERFORMATIVE = _descriptor.Descriptor( name="Propose_Performative", - full_name="fetch.aea.Fipa.FipaMessage.Propose_Performative", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Propose_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="proposal", - full_name="fetch.aea.Fipa.FipaMessage.Propose_Performative.proposal", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Propose_Performative.proposal", index=0, number=1, type=11, @@ -233,26 +237,26 @@ extension_ranges=[], oneofs=[], serialized_start=988, - serialized_end=1069, + serialized_end=1079, ) _FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY = _descriptor.Descriptor( name="InfoEntry", - full_name="fetch.aea.Fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry.key", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -263,14 +267,14 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry.value", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry.value", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -283,25 +287,25 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1186, - serialized_end=1229, + serialized_start=1206, + serialized_end=1249, ) _FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE = _descriptor.Descriptor( name="Accept_W_Inform_Performative", - full_name="fetch.aea.Fipa.FipaMessage.Accept_W_Inform_Performative", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="info", - full_name="fetch.aea.Fipa.FipaMessage.Accept_W_Inform_Performative.info", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.info", index=0, number=1, type=11, @@ -326,27 +330,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1072, - serialized_end=1229, + serialized_start=1082, + serialized_end=1249, ) _FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY = _descriptor.Descriptor( name="InfoEntry", - full_name="fetch.aea.Fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry.key", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -357,14 +361,14 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry.value", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry.value", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -377,25 +381,25 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1186, - serialized_end=1229, + serialized_start=1206, + serialized_end=1249, ) _FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE = _descriptor.Descriptor( name="Match_Accept_W_Inform_Performative", - full_name="fetch.aea.Fipa.FipaMessage.Match_Accept_W_Inform_Performative", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="info", - full_name="fetch.aea.Fipa.FipaMessage.Match_Accept_W_Inform_Performative.info", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.info", index=0, number=1, type=11, @@ -420,27 +424,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1232, - serialized_end=1401, + serialized_start=1252, + serialized_end=1431, ) _FIPAMESSAGE_INFORM_PERFORMATIVE_INFOENTRY = _descriptor.Descriptor( name="InfoEntry", - full_name="fetch.aea.Fipa.FipaMessage.Inform_Performative.InfoEntry", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Fipa.FipaMessage.Inform_Performative.InfoEntry.key", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -451,14 +455,14 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Fipa.FipaMessage.Inform_Performative.InfoEntry.value", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry.value", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -471,25 +475,25 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1186, - serialized_end=1229, + serialized_start=1206, + serialized_end=1249, ) _FIPAMESSAGE_INFORM_PERFORMATIVE = _descriptor.Descriptor( name="Inform_Performative", - full_name="fetch.aea.Fipa.FipaMessage.Inform_Performative", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="info", - full_name="fetch.aea.Fipa.FipaMessage.Inform_Performative.info", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.info", index=0, number=1, type=11, @@ -514,13 +518,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1404, - serialized_end=1543, + serialized_start=1434, + serialized_end=1583, ) _FIPAMESSAGE_ACCEPT_PERFORMATIVE = _descriptor.Descriptor( name="Accept_Performative", - full_name="fetch.aea.Fipa.FipaMessage.Accept_Performative", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -533,13 +537,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1545, - serialized_end=1566, + serialized_start=1585, + serialized_end=1606, ) _FIPAMESSAGE_DECLINE_PERFORMATIVE = _descriptor.Descriptor( name="Decline_Performative", - full_name="fetch.aea.Fipa.FipaMessage.Decline_Performative", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Decline_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -552,13 +556,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1568, - serialized_end=1590, + serialized_start=1608, + serialized_end=1630, ) _FIPAMESSAGE_MATCH_ACCEPT_PERFORMATIVE = _descriptor.Descriptor( name="Match_Accept_Performative", - full_name="fetch.aea.Fipa.FipaMessage.Match_Accept_Performative", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -571,93 +575,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1592, - serialized_end=1619, + serialized_start=1632, + serialized_end=1659, ) _FIPAMESSAGE = _descriptor.Descriptor( name="FipaMessage", - full_name="fetch.aea.Fipa.FipaMessage", + full_name="fetchai.aea.fetchai.fipa.FipaMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.Fipa.FipaMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.Fipa.FipaMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.Fipa.FipaMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.Fipa.FipaMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="accept", - full_name="fetch.aea.Fipa.FipaMessage.accept", - index=4, + full_name="fetchai.aea.fetchai.fipa.FipaMessage.accept", + index=0, number=5, type=11, cpp_type=10, @@ -674,8 +606,8 @@ ), _descriptor.FieldDescriptor( name="accept_w_inform", - full_name="fetch.aea.Fipa.FipaMessage.accept_w_inform", - index=5, + full_name="fetchai.aea.fetchai.fipa.FipaMessage.accept_w_inform", + index=1, number=6, type=11, cpp_type=10, @@ -692,8 +624,8 @@ ), _descriptor.FieldDescriptor( name="cfp", - full_name="fetch.aea.Fipa.FipaMessage.cfp", - index=6, + full_name="fetchai.aea.fetchai.fipa.FipaMessage.cfp", + index=2, number=7, type=11, cpp_type=10, @@ -710,8 +642,8 @@ ), _descriptor.FieldDescriptor( name="decline", - full_name="fetch.aea.Fipa.FipaMessage.decline", - index=7, + full_name="fetchai.aea.fetchai.fipa.FipaMessage.decline", + index=3, number=8, type=11, cpp_type=10, @@ -728,8 +660,8 @@ ), _descriptor.FieldDescriptor( name="inform", - full_name="fetch.aea.Fipa.FipaMessage.inform", - index=8, + full_name="fetchai.aea.fetchai.fipa.FipaMessage.inform", + index=4, number=9, type=11, cpp_type=10, @@ -746,8 +678,8 @@ ), _descriptor.FieldDescriptor( name="match_accept", - full_name="fetch.aea.Fipa.FipaMessage.match_accept", - index=9, + full_name="fetchai.aea.fetchai.fipa.FipaMessage.match_accept", + index=5, number=10, type=11, cpp_type=10, @@ -764,8 +696,8 @@ ), _descriptor.FieldDescriptor( name="match_accept_w_inform", - full_name="fetch.aea.Fipa.FipaMessage.match_accept_w_inform", - index=10, + full_name="fetchai.aea.fetchai.fipa.FipaMessage.match_accept_w_inform", + index=6, number=11, type=11, cpp_type=10, @@ -782,8 +714,8 @@ ), _descriptor.FieldDescriptor( name="propose", - full_name="fetch.aea.Fipa.FipaMessage.propose", - index=11, + full_name="fetchai.aea.fetchai.fipa.FipaMessage.propose", + index=7, number=12, type=11, cpp_type=10, @@ -820,14 +752,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.Fipa.FipaMessage.performative", + full_name="fetchai.aea.fetchai.fipa.FipaMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=31, - serialized_end=1635, + serialized_start=41, + serialized_end=1675, ) _FIPAMESSAGE_DESCRIPTION.containing_type = _FIPAMESSAGE @@ -950,137 +882,137 @@ FipaMessage = _reflection.GeneratedProtocolMessageType( "FipaMessage", (_message.Message,), - { - "Description": _reflection.GeneratedProtocolMessageType( + dict( + Description=_reflection.GeneratedProtocolMessageType( "Description", (_message.Message,), - { - "DESCRIPTOR": _FIPAMESSAGE_DESCRIPTION, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Description) - }, + dict( + DESCRIPTOR=_FIPAMESSAGE_DESCRIPTION, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Description) + ), ), - "Query": _reflection.GeneratedProtocolMessageType( + Query=_reflection.GeneratedProtocolMessageType( "Query", (_message.Message,), - { - "Nothing": _reflection.GeneratedProtocolMessageType( + dict( + Nothing=_reflection.GeneratedProtocolMessageType( "Nothing", (_message.Message,), - { - "DESCRIPTOR": _FIPAMESSAGE_QUERY_NOTHING, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Query.Nothing) - }, + dict( + DESCRIPTOR=_FIPAMESSAGE_QUERY_NOTHING, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Query.Nothing) + ), ), - "DESCRIPTOR": _FIPAMESSAGE_QUERY, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Query) - }, + DESCRIPTOR=_FIPAMESSAGE_QUERY, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Query) + ), ), - "Cfp_Performative": _reflection.GeneratedProtocolMessageType( + Cfp_Performative=_reflection.GeneratedProtocolMessageType( "Cfp_Performative", (_message.Message,), - { - "DESCRIPTOR": _FIPAMESSAGE_CFP_PERFORMATIVE, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Cfp_Performative) - }, + dict( + DESCRIPTOR=_FIPAMESSAGE_CFP_PERFORMATIVE, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Cfp_Performative) + ), ), - "Propose_Performative": _reflection.GeneratedProtocolMessageType( + Propose_Performative=_reflection.GeneratedProtocolMessageType( "Propose_Performative", (_message.Message,), - { - "DESCRIPTOR": _FIPAMESSAGE_PROPOSE_PERFORMATIVE, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Propose_Performative) - }, + dict( + DESCRIPTOR=_FIPAMESSAGE_PROPOSE_PERFORMATIVE, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Propose_Performative) + ), ), - "Accept_W_Inform_Performative": _reflection.GeneratedProtocolMessageType( + Accept_W_Inform_Performative=_reflection.GeneratedProtocolMessageType( "Accept_W_Inform_Performative", (_message.Message,), - { - "InfoEntry": _reflection.GeneratedProtocolMessageType( + dict( + InfoEntry=_reflection.GeneratedProtocolMessageType( "InfoEntry", (_message.Message,), - { - "DESCRIPTOR": _FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry) - }, + dict( + DESCRIPTOR=_FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry) + ), ), - "DESCRIPTOR": _FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Accept_W_Inform_Performative) - }, + DESCRIPTOR=_FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative) + ), ), - "Match_Accept_W_Inform_Performative": _reflection.GeneratedProtocolMessageType( + Match_Accept_W_Inform_Performative=_reflection.GeneratedProtocolMessageType( "Match_Accept_W_Inform_Performative", (_message.Message,), - { - "InfoEntry": _reflection.GeneratedProtocolMessageType( + dict( + InfoEntry=_reflection.GeneratedProtocolMessageType( "InfoEntry", (_message.Message,), - { - "DESCRIPTOR": _FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry) - }, + dict( + DESCRIPTOR=_FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry) + ), ), - "DESCRIPTOR": _FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Match_Accept_W_Inform_Performative) - }, + DESCRIPTOR=_FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative) + ), ), - "Inform_Performative": _reflection.GeneratedProtocolMessageType( + Inform_Performative=_reflection.GeneratedProtocolMessageType( "Inform_Performative", (_message.Message,), - { - "InfoEntry": _reflection.GeneratedProtocolMessageType( + dict( + InfoEntry=_reflection.GeneratedProtocolMessageType( "InfoEntry", (_message.Message,), - { - "DESCRIPTOR": _FIPAMESSAGE_INFORM_PERFORMATIVE_INFOENTRY, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Inform_Performative.InfoEntry) - }, + dict( + DESCRIPTOR=_FIPAMESSAGE_INFORM_PERFORMATIVE_INFOENTRY, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry) + ), ), - "DESCRIPTOR": _FIPAMESSAGE_INFORM_PERFORMATIVE, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Inform_Performative) - }, + DESCRIPTOR=_FIPAMESSAGE_INFORM_PERFORMATIVE, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative) + ), ), - "Accept_Performative": _reflection.GeneratedProtocolMessageType( + Accept_Performative=_reflection.GeneratedProtocolMessageType( "Accept_Performative", (_message.Message,), - { - "DESCRIPTOR": _FIPAMESSAGE_ACCEPT_PERFORMATIVE, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Accept_Performative) - }, + dict( + DESCRIPTOR=_FIPAMESSAGE_ACCEPT_PERFORMATIVE, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Accept_Performative) + ), ), - "Decline_Performative": _reflection.GeneratedProtocolMessageType( + Decline_Performative=_reflection.GeneratedProtocolMessageType( "Decline_Performative", (_message.Message,), - { - "DESCRIPTOR": _FIPAMESSAGE_DECLINE_PERFORMATIVE, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Decline_Performative) - }, + dict( + DESCRIPTOR=_FIPAMESSAGE_DECLINE_PERFORMATIVE, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Decline_Performative) + ), ), - "Match_Accept_Performative": _reflection.GeneratedProtocolMessageType( + Match_Accept_Performative=_reflection.GeneratedProtocolMessageType( "Match_Accept_Performative", (_message.Message,), - { - "DESCRIPTOR": _FIPAMESSAGE_MATCH_ACCEPT_PERFORMATIVE, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage.Match_Accept_Performative) - }, + dict( + DESCRIPTOR=_FIPAMESSAGE_MATCH_ACCEPT_PERFORMATIVE, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_Performative) + ), ), - "DESCRIPTOR": _FIPAMESSAGE, - "__module__": "fipa_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Fipa.FipaMessage) - }, + DESCRIPTOR=_FIPAMESSAGE, + __module__="fipa_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage) + ), ) _sym_db.RegisterMessage(FipaMessage) _sym_db.RegisterMessage(FipaMessage.Description) diff --git a/packages/fetchai/protocols/fipa/protocol.yaml b/packages/fetchai/protocols/fipa/protocol.yaml index 56acab1c84..2615c78643 100644 --- a/packages/fetchai/protocols/fipa/protocol.yaml +++ b/packages/fetchai/protocols/fipa/protocol.yaml @@ -10,10 +10,10 @@ fingerprint: __init__.py: QmZuv8RGegxunYaJ7sHLwj2oLLCFCAGF139b8DxEY68MRT custom_types.py: Qmb7bzEUAW74ZeSFqL7sTccNCjudStV63K4CFNZtibKUHB dialogues.py: QmWaciW35ZTVeTeLWeyp3hjehKkWB5ZY7Di8N8cDH8Mjwb - fipa.proto: QmP7JqnuQSQ9BDcKkscrTydKEX4wFBoyFaY1bkzGkamcit - fipa_pb2.py: QmZMkefJLrb3zJKoimb6a9tdpxDBhc8rR2ghimqg7gZ471 + fipa.proto: QmR1zwvMyS9D45aHkvqzhZ8TdKTzH5EjTfRbfr48pyqCmC + fipa_pb2.py: QmQoAM6ax2c9z6Dt6m4dDvEoW5p2B1CpJ45prTDjjYzttM message.py: QmbFtigdnmqqmKZMTxjmk6JQJtcyhVY9a4mpEEcHmFJd24 - serialization.py: QmU6Xj55eaRxCYAeyR1difC769NHLB8kciorajvkLZCwDR + serialization.py: QmccPH6KqD3DhZr778GW1iGaFXJgDacCjMPuqostvkqEaG fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/fipa/serialization.py b/packages/fetchai/protocols/fipa/serialization.py index d317c4c4ee..1beccf58c1 100644 --- a/packages/fetchai/protocols/fipa/serialization.py +++ b/packages/fetchai/protocols/fipa/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer @@ -42,12 +43,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(FipaMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() fipa_msg = fipa_pb2.FipaMessage() - fipa_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - fipa_msg.dialogue_starter_reference = dialogue_reference[0] - fipa_msg.dialogue_responder_reference = dialogue_reference[1] - fipa_msg.target = msg.target + 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 == FipaMessage.Performative.CFP: @@ -87,8 +91,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - fipa_bytes = fipa_msg.SerializeToString() - return fipa_bytes + dialogue_message_pb.content = fipa_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -98,15 +105,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'Fipa' message. """ + message_pb = ProtobufMessage() fipa_pb = fipa_pb2.FipaMessage() - fipa_pb.ParseFromString(obj) - message_id = fipa_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - fipa_pb.dialogue_starter_reference, - fipa_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = fipa_pb.target + target = message_pb.dialogue_message.target + fipa_pb.ParseFromString(message_pb.dialogue_message.content) performative = fipa_pb.WhichOneof("performative") performative_id = FipaMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/packages/fetchai/protocols/gym/gym.proto b/packages/fetchai/protocols/gym/gym.proto index 4007132c2a..d42a70171f 100644 --- a/packages/fetchai/protocols/gym/gym.proto +++ b/packages/fetchai/protocols/gym/gym.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.Gym; +package fetchai.aea.fetchai.gym; message GymMessage{ @@ -33,11 +33,6 @@ message GymMessage{ message Close_Performative{} - // Standard GymMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Act_Performative act = 5; Close_Performative close = 6; diff --git a/packages/fetchai/protocols/gym/gym_pb2.py b/packages/fetchai/protocols/gym/gym_pb2.py index d189342c1e..b7a30fdc66 100644 --- a/packages/fetchai/protocols/gym/gym_pb2.py +++ b/packages/fetchai/protocols/gym/gym_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: gym.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -14,30 +16,32 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="gym.proto", - package="fetch.aea.Gym", + package="fetchai.aea.fetchai.gym", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\tgym.proto\x12\rfetch.aea.Gym"\xb1\x07\n\nGymMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x39\n\x03\x61\x63t\x18\x05 \x01(\x0b\x32*.fetch.aea.Gym.GymMessage.Act_PerformativeH\x00\x12=\n\x05\x63lose\x18\x06 \x01(\x0b\x32,.fetch.aea.Gym.GymMessage.Close_PerformativeH\x00\x12\x41\n\x07percept\x18\x07 \x01(\x0b\x32..fetch.aea.Gym.GymMessage.Percept_PerformativeH\x00\x12=\n\x05reset\x18\x08 \x01(\x0b\x32,.fetch.aea.Gym.GymMessage.Reset_PerformativeH\x00\x12?\n\x06status\x18\t \x01(\x0b\x32-.fetch.aea.Gym.GymMessage.Status_PerformativeH\x00\x1a\x18\n\tAnyObject\x12\x0b\n\x03\x61ny\x18\x01 \x01(\x0c\x1aX\n\x10\x41\x63t_Performative\x12\x33\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32#.fetch.aea.Gym.GymMessage.AnyObject\x12\x0f\n\x07step_id\x18\x02 \x01(\x05\x1a\xb2\x01\n\x14Percept_Performative\x12\x0f\n\x07step_id\x18\x01 \x01(\x05\x12\x38\n\x0bobservation\x18\x02 \x01(\x0b\x32#.fetch.aea.Gym.GymMessage.AnyObject\x12\x0e\n\x06reward\x18\x03 \x01(\x02\x12\x0c\n\x04\x64one\x18\x04 \x01(\x08\x12\x31\n\x04info\x18\x05 \x01(\x0b\x32#.fetch.aea.Gym.GymMessage.AnyObject\x1a\x92\x01\n\x13Status_Performative\x12K\n\x07\x63ontent\x18\x01 \x03(\x0b\x32:.fetch.aea.Gym.GymMessage.Status_Performative.ContentEntry\x1a.\n\x0c\x43ontentEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x14\n\x12Reset_Performative\x1a\x14\n\x12\x43lose_PerformativeB\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\tgym.proto\x12\x17\x66\x65tchai.aea.fetchai.gym"\x9d\x07\n\nGymMessage\x12\x43\n\x03\x61\x63t\x18\x05 \x01(\x0b\x32\x34.fetchai.aea.fetchai.gym.GymMessage.Act_PerformativeH\x00\x12G\n\x05\x63lose\x18\x06 \x01(\x0b\x32\x36.fetchai.aea.fetchai.gym.GymMessage.Close_PerformativeH\x00\x12K\n\x07percept\x18\x07 \x01(\x0b\x32\x38.fetchai.aea.fetchai.gym.GymMessage.Percept_PerformativeH\x00\x12G\n\x05reset\x18\x08 \x01(\x0b\x32\x36.fetchai.aea.fetchai.gym.GymMessage.Reset_PerformativeH\x00\x12I\n\x06status\x18\t \x01(\x0b\x32\x37.fetchai.aea.fetchai.gym.GymMessage.Status_PerformativeH\x00\x1a\x18\n\tAnyObject\x12\x0b\n\x03\x61ny\x18\x01 \x01(\x0c\x1a\x62\n\x10\x41\x63t_Performative\x12=\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32-.fetchai.aea.fetchai.gym.GymMessage.AnyObject\x12\x0f\n\x07step_id\x18\x02 \x01(\x05\x1a\xc6\x01\n\x14Percept_Performative\x12\x0f\n\x07step_id\x18\x01 \x01(\x05\x12\x42\n\x0bobservation\x18\x02 \x01(\x0b\x32-.fetchai.aea.fetchai.gym.GymMessage.AnyObject\x12\x0e\n\x06reward\x18\x03 \x01(\x02\x12\x0c\n\x04\x64one\x18\x04 \x01(\x08\x12;\n\x04info\x18\x05 \x01(\x0b\x32-.fetchai.aea.fetchai.gym.GymMessage.AnyObject\x1a\x9c\x01\n\x13Status_Performative\x12U\n\x07\x63ontent\x18\x01 \x03(\x0b\x32\x44.fetchai.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry\x1a.\n\x0c\x43ontentEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x14\n\x12Reset_Performative\x1a\x14\n\x12\x43lose_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + ), ) _GYMMESSAGE_ANYOBJECT = _descriptor.Descriptor( name="AnyObject", - full_name="fetch.aea.Gym.GymMessage.AnyObject", + full_name="fetchai.aea.fetchai.gym.GymMessage.AnyObject", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="any", - full_name="fetch.aea.Gym.GymMessage.AnyObject.any", + full_name="fetchai.aea.fetchai.gym.GymMessage.AnyObject.any", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -55,20 +59,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=470, - serialized_end=494, + serialized_start=420, + serialized_end=444, ) _GYMMESSAGE_ACT_PERFORMATIVE = _descriptor.Descriptor( name="Act_Performative", - full_name="fetch.aea.Gym.GymMessage.Act_Performative", + full_name="fetchai.aea.fetchai.gym.GymMessage.Act_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="action", - full_name="fetch.aea.Gym.GymMessage.Act_Performative.action", + full_name="fetchai.aea.fetchai.gym.GymMessage.Act_Performative.action", index=0, number=1, type=11, @@ -86,7 +90,7 @@ ), _descriptor.FieldDescriptor( name="step_id", - full_name="fetch.aea.Gym.GymMessage.Act_Performative.step_id", + full_name="fetchai.aea.fetchai.gym.GymMessage.Act_Performative.step_id", index=1, number=2, type=5, @@ -111,20 +115,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=496, - serialized_end=584, + serialized_start=446, + serialized_end=544, ) _GYMMESSAGE_PERCEPT_PERFORMATIVE = _descriptor.Descriptor( name="Percept_Performative", - full_name="fetch.aea.Gym.GymMessage.Percept_Performative", + full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="step_id", - full_name="fetch.aea.Gym.GymMessage.Percept_Performative.step_id", + full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative.step_id", index=0, number=1, type=5, @@ -142,7 +146,7 @@ ), _descriptor.FieldDescriptor( name="observation", - full_name="fetch.aea.Gym.GymMessage.Percept_Performative.observation", + full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative.observation", index=1, number=2, type=11, @@ -160,7 +164,7 @@ ), _descriptor.FieldDescriptor( name="reward", - full_name="fetch.aea.Gym.GymMessage.Percept_Performative.reward", + full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative.reward", index=2, number=3, type=2, @@ -178,7 +182,7 @@ ), _descriptor.FieldDescriptor( name="done", - full_name="fetch.aea.Gym.GymMessage.Percept_Performative.done", + full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative.done", index=3, number=4, type=8, @@ -196,7 +200,7 @@ ), _descriptor.FieldDescriptor( name="info", - full_name="fetch.aea.Gym.GymMessage.Percept_Performative.info", + full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative.info", index=4, number=5, type=11, @@ -221,27 +225,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=587, - serialized_end=765, + serialized_start=547, + serialized_end=745, ) _GYMMESSAGE_STATUS_PERFORMATIVE_CONTENTENTRY = _descriptor.Descriptor( name="ContentEntry", - full_name="fetch.aea.Gym.GymMessage.Status_Performative.ContentEntry", + full_name="fetchai.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Gym.GymMessage.Status_Performative.ContentEntry.key", + full_name="fetchai.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -252,14 +256,14 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Gym.GymMessage.Status_Performative.ContentEntry.value", + full_name="fetchai.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry.value", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -272,25 +276,25 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=868, - serialized_end=914, + serialized_start=858, + serialized_end=904, ) _GYMMESSAGE_STATUS_PERFORMATIVE = _descriptor.Descriptor( name="Status_Performative", - full_name="fetch.aea.Gym.GymMessage.Status_Performative", + full_name="fetchai.aea.fetchai.gym.GymMessage.Status_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content", - full_name="fetch.aea.Gym.GymMessage.Status_Performative.content", + full_name="fetchai.aea.fetchai.gym.GymMessage.Status_Performative.content", index=0, number=1, type=11, @@ -315,13 +319,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=768, - serialized_end=914, + serialized_start=748, + serialized_end=904, ) _GYMMESSAGE_RESET_PERFORMATIVE = _descriptor.Descriptor( name="Reset_Performative", - full_name="fetch.aea.Gym.GymMessage.Reset_Performative", + full_name="fetchai.aea.fetchai.gym.GymMessage.Reset_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -334,13 +338,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=916, - serialized_end=936, + serialized_start=906, + serialized_end=926, ) _GYMMESSAGE_CLOSE_PERFORMATIVE = _descriptor.Descriptor( name="Close_Performative", - full_name="fetch.aea.Gym.GymMessage.Close_Performative", + full_name="fetchai.aea.fetchai.gym.GymMessage.Close_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -353,93 +357,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=938, - serialized_end=958, + serialized_start=928, + serialized_end=948, ) _GYMMESSAGE = _descriptor.Descriptor( name="GymMessage", - full_name="fetch.aea.Gym.GymMessage", + full_name="fetchai.aea.fetchai.gym.GymMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.Gym.GymMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.Gym.GymMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.Gym.GymMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.Gym.GymMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="act", - full_name="fetch.aea.Gym.GymMessage.act", - index=4, + full_name="fetchai.aea.fetchai.gym.GymMessage.act", + index=0, number=5, type=11, cpp_type=10, @@ -456,8 +388,8 @@ ), _descriptor.FieldDescriptor( name="close", - full_name="fetch.aea.Gym.GymMessage.close", - index=5, + full_name="fetchai.aea.fetchai.gym.GymMessage.close", + index=1, number=6, type=11, cpp_type=10, @@ -474,8 +406,8 @@ ), _descriptor.FieldDescriptor( name="percept", - full_name="fetch.aea.Gym.GymMessage.percept", - index=6, + full_name="fetchai.aea.fetchai.gym.GymMessage.percept", + index=2, number=7, type=11, cpp_type=10, @@ -492,8 +424,8 @@ ), _descriptor.FieldDescriptor( name="reset", - full_name="fetch.aea.Gym.GymMessage.reset", - index=7, + full_name="fetchai.aea.fetchai.gym.GymMessage.reset", + index=3, number=8, type=11, cpp_type=10, @@ -510,8 +442,8 @@ ), _descriptor.FieldDescriptor( name="status", - full_name="fetch.aea.Gym.GymMessage.status", - index=8, + full_name="fetchai.aea.fetchai.gym.GymMessage.status", + index=4, number=9, type=11, cpp_type=10, @@ -544,14 +476,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.Gym.GymMessage.performative", + full_name="fetchai.aea.fetchai.gym.GymMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=29, - serialized_end=974, + serialized_start=39, + serialized_end=964, ) _GYMMESSAGE_ANYOBJECT.containing_type = _GYMMESSAGE @@ -616,74 +548,74 @@ GymMessage = _reflection.GeneratedProtocolMessageType( "GymMessage", (_message.Message,), - { - "AnyObject": _reflection.GeneratedProtocolMessageType( + dict( + AnyObject=_reflection.GeneratedProtocolMessageType( "AnyObject", (_message.Message,), - { - "DESCRIPTOR": _GYMMESSAGE_ANYOBJECT, - "__module__": "gym_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Gym.GymMessage.AnyObject) - }, + dict( + DESCRIPTOR=_GYMMESSAGE_ANYOBJECT, + __module__="gym_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.AnyObject) + ), ), - "Act_Performative": _reflection.GeneratedProtocolMessageType( + Act_Performative=_reflection.GeneratedProtocolMessageType( "Act_Performative", (_message.Message,), - { - "DESCRIPTOR": _GYMMESSAGE_ACT_PERFORMATIVE, - "__module__": "gym_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Gym.GymMessage.Act_Performative) - }, + dict( + DESCRIPTOR=_GYMMESSAGE_ACT_PERFORMATIVE, + __module__="gym_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Act_Performative) + ), ), - "Percept_Performative": _reflection.GeneratedProtocolMessageType( + Percept_Performative=_reflection.GeneratedProtocolMessageType( "Percept_Performative", (_message.Message,), - { - "DESCRIPTOR": _GYMMESSAGE_PERCEPT_PERFORMATIVE, - "__module__": "gym_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Gym.GymMessage.Percept_Performative) - }, + dict( + DESCRIPTOR=_GYMMESSAGE_PERCEPT_PERFORMATIVE, + __module__="gym_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Percept_Performative) + ), ), - "Status_Performative": _reflection.GeneratedProtocolMessageType( + Status_Performative=_reflection.GeneratedProtocolMessageType( "Status_Performative", (_message.Message,), - { - "ContentEntry": _reflection.GeneratedProtocolMessageType( + dict( + ContentEntry=_reflection.GeneratedProtocolMessageType( "ContentEntry", (_message.Message,), - { - "DESCRIPTOR": _GYMMESSAGE_STATUS_PERFORMATIVE_CONTENTENTRY, - "__module__": "gym_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Gym.GymMessage.Status_Performative.ContentEntry) - }, + dict( + DESCRIPTOR=_GYMMESSAGE_STATUS_PERFORMATIVE_CONTENTENTRY, + __module__="gym_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry) + ), ), - "DESCRIPTOR": _GYMMESSAGE_STATUS_PERFORMATIVE, - "__module__": "gym_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Gym.GymMessage.Status_Performative) - }, + DESCRIPTOR=_GYMMESSAGE_STATUS_PERFORMATIVE, + __module__="gym_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Status_Performative) + ), ), - "Reset_Performative": _reflection.GeneratedProtocolMessageType( + Reset_Performative=_reflection.GeneratedProtocolMessageType( "Reset_Performative", (_message.Message,), - { - "DESCRIPTOR": _GYMMESSAGE_RESET_PERFORMATIVE, - "__module__": "gym_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Gym.GymMessage.Reset_Performative) - }, + dict( + DESCRIPTOR=_GYMMESSAGE_RESET_PERFORMATIVE, + __module__="gym_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Reset_Performative) + ), ), - "Close_Performative": _reflection.GeneratedProtocolMessageType( + Close_Performative=_reflection.GeneratedProtocolMessageType( "Close_Performative", (_message.Message,), - { - "DESCRIPTOR": _GYMMESSAGE_CLOSE_PERFORMATIVE, - "__module__": "gym_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Gym.GymMessage.Close_Performative) - }, + dict( + DESCRIPTOR=_GYMMESSAGE_CLOSE_PERFORMATIVE, + __module__="gym_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Close_Performative) + ), ), - "DESCRIPTOR": _GYMMESSAGE, - "__module__": "gym_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Gym.GymMessage) - }, + DESCRIPTOR=_GYMMESSAGE, + __module__="gym_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage) + ), ) _sym_db.RegisterMessage(GymMessage) _sym_db.RegisterMessage(GymMessage.AnyObject) diff --git a/packages/fetchai/protocols/gym/protocol.yaml b/packages/fetchai/protocols/gym/protocol.yaml index 7a14814699..067c9b24de 100644 --- a/packages/fetchai/protocols/gym/protocol.yaml +++ b/packages/fetchai/protocols/gym/protocol.yaml @@ -10,10 +10,10 @@ fingerprint: __init__.py: QmWBvruqGuU2BVCq8cuP1S3mgvuC78yrG4TdtSvKhCT8qX custom_types.py: QmfDaswopanUqsETQXMatKfwwDSSo7q2Edz9MXGimT5jbf dialogues.py: QmdCzcFfyPF43U2SoxwshG5p4hd6dK49m6GYKduDHbnNPo - gym.proto: QmQGF9Xz4Z93wmhdKoztzxjo5pS4SsAWe2TQdvZCLuzdGC - gym_pb2.py: QmSTz7xrL8ryqzR1Sgu1NpR6PmW7GUhBGnN2qYc8m8NCcN + gym.proto: QmeYNsnWj9yYLiMyJqTBFPw9o2TUVDBo8WfyaDcY8D87EF + gym_pb2.py: QmVW25q9Yhb1SG1HgpLMhWpYXBHkHsGq481gpR3gx8xcZG message.py: Qmc4wx56DVaSpLe6h7KSUBmxEWoHVFFAQQB4mpympggcTG - serialization.py: QmaZd7YMHrHZvbeMMb1JfnkUZRHk7zKy45M7kDvG5wbY9C + serialization.py: QmSxsJYMNbowsrCeY5s14FbT8J1XJf2LkPDaGv7ZP5ea4e fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/gym/serialization.py b/packages/fetchai/protocols/gym/serialization.py index 8b058f15b5..5322b19546 100644 --- a/packages/fetchai/protocols/gym/serialization.py +++ b/packages/fetchai/protocols/gym/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer @@ -41,12 +42,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(GymMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() gym_msg = gym_pb2.GymMessage() - gym_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - gym_msg.dialogue_starter_reference = dialogue_reference[0] - gym_msg.dialogue_responder_reference = dialogue_reference[1] - gym_msg.target = msg.target + 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 == GymMessage.Performative.ACT: @@ -83,8 +87,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - gym_bytes = gym_msg.SerializeToString() - return gym_bytes + dialogue_message_pb.content = gym_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -94,15 +101,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'Gym' message. """ + message_pb = ProtobufMessage() gym_pb = gym_pb2.GymMessage() - gym_pb.ParseFromString(obj) - message_id = gym_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - gym_pb.dialogue_starter_reference, - gym_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = gym_pb.target + target = message_pb.dialogue_message.target + gym_pb.ParseFromString(message_pb.dialogue_message.content) performative = gym_pb.WhichOneof("performative") performative_id = GymMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/packages/fetchai/protocols/http/http.proto b/packages/fetchai/protocols/http/http.proto index 0b259bc3b9..e8f34e6267 100644 --- a/packages/fetchai/protocols/http/http.proto +++ b/packages/fetchai/protocols/http/http.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.Http; +package fetchai.aea.fetchai.http; message HttpMessage{ @@ -22,11 +22,6 @@ message HttpMessage{ } - // Standard HttpMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Request_Performative request = 5; Response_Performative response = 6; diff --git a/packages/fetchai/protocols/http/http_pb2.py b/packages/fetchai/protocols/http/http_pb2.py index 98a98aa43e..da8ac345d1 100644 --- a/packages/fetchai/protocols/http/http_pb2.py +++ b/packages/fetchai/protocols/http/http_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: http.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -14,30 +16,32 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="http.proto", - package="fetch.aea.Http", + package="fetchai.aea.fetchai.http", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\nhttp.proto\x12\x0e\x66\x65tch.aea.Http"\xf1\x03\n\x0bHttpMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x43\n\x07request\x18\x05 \x01(\x0b\x32\x30.fetch.aea.Http.HttpMessage.Request_PerformativeH\x00\x12\x45\n\x08response\x18\x06 \x01(\x0b\x32\x31.fetch.aea.Http.HttpMessage.Response_PerformativeH\x00\x1a\x64\n\x14Request_Performative\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\r\n\x05\x62odyy\x18\x05 \x01(\x0c\x1ar\n\x15Response_Performative\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x13\n\x0bstatus_code\x18\x02 \x01(\x05\x12\x13\n\x0bstatus_text\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\r\n\x05\x62odyy\x18\x05 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\nhttp.proto\x12\x18\x66\x65tchai.aea.fetchai.http"\x97\x03\n\x0bHttpMessage\x12M\n\x07request\x18\x05 \x01(\x0b\x32:.fetchai.aea.fetchai.http.HttpMessage.Request_PerformativeH\x00\x12O\n\x08response\x18\x06 \x01(\x0b\x32;.fetchai.aea.fetchai.http.HttpMessage.Response_PerformativeH\x00\x1a\x64\n\x14Request_Performative\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\r\n\x05\x62odyy\x18\x05 \x01(\x0c\x1ar\n\x15Response_Performative\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x13\n\x0bstatus_code\x18\x02 \x01(\x05\x12\x13\n\x0bstatus_text\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\r\n\x05\x62odyy\x18\x05 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3' + ), ) _HTTPMESSAGE_REQUEST_PERFORMATIVE = _descriptor.Descriptor( name="Request_Performative", - full_name="fetch.aea.Http.HttpMessage.Request_Performative", + full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="method", - full_name="fetch.aea.Http.HttpMessage.Request_Performative.method", + full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative.method", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -48,14 +52,14 @@ ), _descriptor.FieldDescriptor( name="url", - full_name="fetch.aea.Http.HttpMessage.Request_Performative.url", + full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative.url", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -66,14 +70,14 @@ ), _descriptor.FieldDescriptor( name="version", - full_name="fetch.aea.Http.HttpMessage.Request_Performative.version", + full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative.version", index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -84,14 +88,14 @@ ), _descriptor.FieldDescriptor( name="headers", - full_name="fetch.aea.Http.HttpMessage.Request_Performative.headers", + full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative.headers", index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -102,14 +106,14 @@ ), _descriptor.FieldDescriptor( name="bodyy", - full_name="fetch.aea.Http.HttpMessage.Request_Performative.bodyy", + full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative.bodyy", index=4, number=5, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -127,27 +131,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=296, - serialized_end=396, + serialized_start=216, + serialized_end=316, ) _HTTPMESSAGE_RESPONSE_PERFORMATIVE = _descriptor.Descriptor( name="Response_Performative", - full_name="fetch.aea.Http.HttpMessage.Response_Performative", + full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="version", - full_name="fetch.aea.Http.HttpMessage.Response_Performative.version", + full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative.version", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -158,7 +162,7 @@ ), _descriptor.FieldDescriptor( name="status_code", - full_name="fetch.aea.Http.HttpMessage.Response_Performative.status_code", + full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative.status_code", index=1, number=2, type=5, @@ -176,14 +180,14 @@ ), _descriptor.FieldDescriptor( name="status_text", - full_name="fetch.aea.Http.HttpMessage.Response_Performative.status_text", + full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative.status_text", index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -194,14 +198,14 @@ ), _descriptor.FieldDescriptor( name="headers", - full_name="fetch.aea.Http.HttpMessage.Response_Performative.headers", + full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative.headers", index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -212,14 +216,14 @@ ), _descriptor.FieldDescriptor( name="bodyy", - full_name="fetch.aea.Http.HttpMessage.Response_Performative.bodyy", + full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative.bodyy", index=4, number=5, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -237,93 +241,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=398, - serialized_end=512, + serialized_start=318, + serialized_end=432, ) _HTTPMESSAGE = _descriptor.Descriptor( name="HttpMessage", - full_name="fetch.aea.Http.HttpMessage", + full_name="fetchai.aea.fetchai.http.HttpMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.Http.HttpMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.Http.HttpMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.Http.HttpMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.Http.HttpMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="request", - full_name="fetch.aea.Http.HttpMessage.request", - index=4, + full_name="fetchai.aea.fetchai.http.HttpMessage.request", + index=0, number=5, type=11, cpp_type=10, @@ -340,8 +272,8 @@ ), _descriptor.FieldDescriptor( name="response", - full_name="fetch.aea.Http.HttpMessage.response", - index=5, + full_name="fetchai.aea.fetchai.http.HttpMessage.response", + index=1, number=6, type=11, cpp_type=10, @@ -370,14 +302,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.Http.HttpMessage.performative", + full_name="fetchai.aea.fetchai.http.HttpMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=31, - serialized_end=528, + serialized_start=41, + serialized_end=448, ) _HTTPMESSAGE_REQUEST_PERFORMATIVE.containing_type = _HTTPMESSAGE @@ -404,29 +336,29 @@ HttpMessage = _reflection.GeneratedProtocolMessageType( "HttpMessage", (_message.Message,), - { - "Request_Performative": _reflection.GeneratedProtocolMessageType( + dict( + Request_Performative=_reflection.GeneratedProtocolMessageType( "Request_Performative", (_message.Message,), - { - "DESCRIPTOR": _HTTPMESSAGE_REQUEST_PERFORMATIVE, - "__module__": "http_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Http.HttpMessage.Request_Performative) - }, + dict( + DESCRIPTOR=_HTTPMESSAGE_REQUEST_PERFORMATIVE, + __module__="http_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.http.HttpMessage.Request_Performative) + ), ), - "Response_Performative": _reflection.GeneratedProtocolMessageType( + Response_Performative=_reflection.GeneratedProtocolMessageType( "Response_Performative", (_message.Message,), - { - "DESCRIPTOR": _HTTPMESSAGE_RESPONSE_PERFORMATIVE, - "__module__": "http_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Http.HttpMessage.Response_Performative) - }, + dict( + DESCRIPTOR=_HTTPMESSAGE_RESPONSE_PERFORMATIVE, + __module__="http_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.http.HttpMessage.Response_Performative) + ), ), - "DESCRIPTOR": _HTTPMESSAGE, - "__module__": "http_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Http.HttpMessage) - }, + DESCRIPTOR=_HTTPMESSAGE, + __module__="http_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.http.HttpMessage) + ), ) _sym_db.RegisterMessage(HttpMessage) _sym_db.RegisterMessage(HttpMessage.Request_Performative) diff --git a/packages/fetchai/protocols/http/protocol.yaml b/packages/fetchai/protocols/http/protocol.yaml index bfe9679b93..cf2b6b3798 100644 --- a/packages/fetchai/protocols/http/protocol.yaml +++ b/packages/fetchai/protocols/http/protocol.yaml @@ -9,10 +9,10 @@ fingerprint: README.md: QmY7fxhyNBgwU7uc6LKtCN4aSQ4bym5BwqtwRAfwPokULN __init__.py: QmRWie4QPiFJE8nK4fFJ6prqoG3u36cPo7st5JUZAGpVWv dialogues.py: QmdwTehjCppcxyDid8m6zuHY5YwprUhato88R9Zdm9aXaM - http.proto: QmdTUTvvxGxMxSTB67AXjMUSDLdsxBYiSuJNVxHuLKB1jS - http_pb2.py: QmYYKqdwiueq54EveL9WXn216FXLSQ6XGJJHoiJxwJjzHC + http.proto: Qmc69XzEVztUJGpJJoUwoZnq2Pi3K4sKzFeMookVC2QuxN + http_pb2.py: QmeGUMT6ALDWQyMgYAy481RqvZxjeTG4aq3E8msdRtmmbX message.py: QmYSmd2xLU8TsLLorxxNnaHj1cVLztgrKtQnaqJ1USFkPY - serialization.py: QmUgo5BtLYDyy7syHBd6brd8zAXivNR2UEiBckryCwg6hk + serialization.py: QmWHtnfKcgDyE3CBuP4LRVRToj8MBS4EoaoETDcV1Jdoe5 fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/http/serialization.py b/packages/fetchai/protocols/http/serialization.py index 749ddba29d..0bfb33d5a8 100644 --- a/packages/fetchai/protocols/http/serialization.py +++ b/packages/fetchai/protocols/http/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer @@ -40,12 +41,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(HttpMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() http_msg = http_pb2.HttpMessage() - http_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - http_msg.dialogue_starter_reference = dialogue_reference[0] - http_msg.dialogue_responder_reference = dialogue_reference[1] - http_msg.target = msg.target + 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 == HttpMessage.Performative.REQUEST: @@ -77,8 +81,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - http_bytes = http_msg.SerializeToString() - return http_bytes + dialogue_message_pb.content = http_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -88,15 +95,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'Http' message. """ + message_pb = ProtobufMessage() http_pb = http_pb2.HttpMessage() - http_pb.ParseFromString(obj) - message_id = http_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - http_pb.dialogue_starter_reference, - http_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = http_pb.target + target = message_pb.dialogue_message.target + http_pb.ParseFromString(message_pb.dialogue_message.content) performative = http_pb.WhichOneof("performative") performative_id = HttpMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/packages/fetchai/protocols/ledger_api/ledger_api.proto b/packages/fetchai/protocols/ledger_api/ledger_api.proto index 27f94bfc60..76d9490701 100644 --- a/packages/fetchai/protocols/ledger_api/ledger_api.proto +++ b/packages/fetchai/protocols/ledger_api/ledger_api.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.LedgerApi; +package fetchai.aea.fetchai.ledger_api; message LedgerApiMessage{ @@ -70,11 +70,6 @@ message LedgerApiMessage{ } - // Standard LedgerApiMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Balance_Performative balance = 5; Error_Performative error = 6; diff --git a/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py b/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py index 9d99afb36b..0c689a9e70 100644 --- a/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py +++ b/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: ledger_api.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -14,30 +16,32 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="ledger_api.proto", - package="fetch.aea.LedgerApi", + package="fetchai.aea.fetchai.ledger_api", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\x10ledger_api.proto\x12\x13\x66\x65tch.aea.LedgerApi"\xf1\x10\n\x10LedgerApiMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12M\n\x07\x62\x61lance\x18\x05 \x01(\x0b\x32:.fetch.aea.LedgerApi.LedgerApiMessage.Balance_PerformativeH\x00\x12I\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x38.fetch.aea.LedgerApi.LedgerApiMessage.Error_PerformativeH\x00\x12U\n\x0bget_balance\x18\x07 \x01(\x0b\x32>.fetch.aea.LedgerApi.LedgerApiMessage.Get_Balance_PerformativeH\x00\x12\x65\n\x13get_raw_transaction\x18\x08 \x01(\x0b\x32\x46.fetch.aea.LedgerApi.LedgerApiMessage.Get_Raw_Transaction_PerformativeH\x00\x12m\n\x17get_transaction_receipt\x18\t \x01(\x0b\x32J.fetch.aea.LedgerApi.LedgerApiMessage.Get_Transaction_Receipt_PerformativeH\x00\x12]\n\x0fraw_transaction\x18\n \x01(\x0b\x32\x42.fetch.aea.LedgerApi.LedgerApiMessage.Raw_Transaction_PerformativeH\x00\x12m\n\x17send_signed_transaction\x18\x0b \x01(\x0b\x32J.fetch.aea.LedgerApi.LedgerApiMessage.Send_Signed_Transaction_PerformativeH\x00\x12\x63\n\x12transaction_digest\x18\x0c \x01(\x0b\x32\x45.fetch.aea.LedgerApi.LedgerApiMessage.Transaction_Digest_PerformativeH\x00\x12\x65\n\x13transaction_receipt\x18\r \x01(\x0b\x32\x46.fetch.aea.LedgerApi.LedgerApiMessage.Transaction_Receipt_PerformativeH\x00\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a/\n\x11SignedTransaction\x12\x1a\n\x12signed_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05Terms\x12\r\n\x05terms\x18\x01 \x01(\x0c\x1a/\n\x11TransactionDigest\x12\x1a\n\x12transaction_digest\x18\x01 \x01(\x0c\x1a\x31\n\x12TransactionReceipt\x12\x1b\n\x13transaction_receipt\x18\x01 \x01(\x0c\x1a>\n\x18Get_Balance_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x1a^\n Get_Raw_Transaction_Performative\x12:\n\x05terms\x18\x01 \x01(\x0b\x32+.fetch.aea.LedgerApi.LedgerApiMessage.Terms\x1a{\n$Send_Signed_Transaction_Performative\x12S\n\x12signed_transaction\x18\x01 \x01(\x0b\x32\x37.fetch.aea.LedgerApi.LedgerApiMessage.SignedTransaction\x1a{\n$Get_Transaction_Receipt_Performative\x12S\n\x12transaction_digest\x18\x01 \x01(\x0b\x32\x37.fetch.aea.LedgerApi.LedgerApiMessage.TransactionDigest\x1a:\n\x14\x42\x61lance_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x0f\n\x07\x62\x61lance\x18\x02 \x01(\x05\x1am\n\x1cRaw_Transaction_Performative\x12M\n\x0fraw_transaction\x18\x01 \x01(\x0b\x32\x34.fetch.aea.LedgerApi.LedgerApiMessage.RawTransaction\x1av\n\x1fTransaction_Digest_Performative\x12S\n\x12transaction_digest\x18\x01 \x01(\x0b\x32\x37.fetch.aea.LedgerApi.LedgerApiMessage.TransactionDigest\x1ay\n Transaction_Receipt_Performative\x12U\n\x13transaction_receipt\x18\x01 \x01(\x0b\x32\x38.fetch.aea.LedgerApi.LedgerApiMessage.TransactionReceipt\x1an\n\x12\x45rror_Performative\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x16\n\x0emessage_is_set\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x13\n\x0b\x64\x61ta_is_set\x18\x05 \x01(\x08\x42\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\x10ledger_api.proto\x12\x1e\x66\x65tchai.aea.fetchai.ledger_api"\xac\x11\n\x10LedgerApiMessage\x12X\n\x07\x62\x61lance\x18\x05 \x01(\x0b\x32\x45.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Balance_PerformativeH\x00\x12T\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x43.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_PerformativeH\x00\x12`\n\x0bget_balance\x18\x07 \x01(\x0b\x32I.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_PerformativeH\x00\x12p\n\x13get_raw_transaction\x18\x08 \x01(\x0b\x32Q.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_PerformativeH\x00\x12x\n\x17get_transaction_receipt\x18\t \x01(\x0b\x32U.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_PerformativeH\x00\x12h\n\x0fraw_transaction\x18\n \x01(\x0b\x32M.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_PerformativeH\x00\x12x\n\x17send_signed_transaction\x18\x0b \x01(\x0b\x32U.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_PerformativeH\x00\x12n\n\x12transaction_digest\x18\x0c \x01(\x0b\x32P.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_PerformativeH\x00\x12p\n\x13transaction_receipt\x18\r \x01(\x0b\x32Q.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_PerformativeH\x00\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a/\n\x11SignedTransaction\x12\x1a\n\x12signed_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05Terms\x12\r\n\x05terms\x18\x01 \x01(\x0c\x1a/\n\x11TransactionDigest\x12\x1a\n\x12transaction_digest\x18\x01 \x01(\x0c\x1a\x31\n\x12TransactionReceipt\x12\x1b\n\x13transaction_receipt\x18\x01 \x01(\x0c\x1a>\n\x18Get_Balance_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x1ai\n Get_Raw_Transaction_Performative\x12\x45\n\x05terms\x18\x01 \x01(\x0b\x32\x36.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Terms\x1a\x86\x01\n$Send_Signed_Transaction_Performative\x12^\n\x12signed_transaction\x18\x01 \x01(\x0b\x32\x42.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction\x1a\x86\x01\n$Get_Transaction_Receipt_Performative\x12^\n\x12transaction_digest\x18\x01 \x01(\x0b\x32\x42.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest\x1a:\n\x14\x42\x61lance_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x0f\n\x07\x62\x61lance\x18\x02 \x01(\x05\x1ax\n\x1cRaw_Transaction_Performative\x12X\n\x0fraw_transaction\x18\x01 \x01(\x0b\x32?.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction\x1a\x81\x01\n\x1fTransaction_Digest_Performative\x12^\n\x12transaction_digest\x18\x01 \x01(\x0b\x32\x42.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest\x1a\x84\x01\n Transaction_Receipt_Performative\x12`\n\x13transaction_receipt\x18\x01 \x01(\x0b\x32\x43.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt\x1an\n\x12\x45rror_Performative\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x16\n\x0emessage_is_set\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x13\n\x0b\x64\x61ta_is_set\x18\x05 \x01(\x08\x42\x0e\n\x0cperformativeb\x06proto3' + ), ) _LEDGERAPIMESSAGE_RAWTRANSACTION = _descriptor.Descriptor( name="RawTransaction", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.RawTransaction", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.RawTransaction.raw_transaction", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction.raw_transaction", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -61,21 +65,21 @@ _LEDGERAPIMESSAGE_SIGNEDTRANSACTION = _descriptor.Descriptor( name="SignedTransaction", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.SignedTransaction", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_transaction", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.SignedTransaction.signed_transaction", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction.signed_transaction", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -99,21 +103,21 @@ _LEDGERAPIMESSAGE_TERMS = _descriptor.Descriptor( name="Terms", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Terms", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Terms", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Terms.terms", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Terms.terms", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -137,21 +141,21 @@ _LEDGERAPIMESSAGE_TRANSACTIONDIGEST = _descriptor.Descriptor( name="TransactionDigest", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.TransactionDigest", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_digest", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.TransactionDigest.transaction_digest", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest.transaction_digest", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -175,21 +179,21 @@ _LEDGERAPIMESSAGE_TRANSACTIONRECEIPT = _descriptor.Descriptor( name="TransactionReceipt", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.TransactionReceipt", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_receipt", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.TransactionReceipt.transaction_receipt", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt.transaction_receipt", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -213,21 +217,21 @@ _LEDGERAPIMESSAGE_GET_BALANCE_PERFORMATIVE = _descriptor.Descriptor( name="Get_Balance_Performative", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Get_Balance_Performative", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Get_Balance_Performative.ledger_id", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative.ledger_id", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -238,14 +242,14 @@ ), _descriptor.FieldDescriptor( name="address", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Get_Balance_Performative.address", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative.address", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -269,14 +273,14 @@ _LEDGERAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Get_Raw_Transaction_Performative", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Get_Raw_Transaction_Performative", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Get_Raw_Transaction_Performative.terms", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_Performative.terms", index=0, number=1, type=11, @@ -302,19 +306,19 @@ extension_ranges=[], oneofs=[], serialized_start=1317, - serialized_end=1411, + serialized_end=1422, ) _LEDGERAPIMESSAGE_SEND_SIGNED_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Send_Signed_Transaction_Performative", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Send_Signed_Transaction_Performative", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_transaction", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Send_Signed_Transaction_Performative.signed_transaction", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_Performative.signed_transaction", index=0, number=1, type=11, @@ -339,20 +343,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1413, - serialized_end=1536, + serialized_start=1425, + serialized_end=1559, ) _LEDGERAPIMESSAGE_GET_TRANSACTION_RECEIPT_PERFORMATIVE = _descriptor.Descriptor( name="Get_Transaction_Receipt_Performative", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Get_Transaction_Receipt_Performative", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_digest", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Get_Transaction_Receipt_Performative.transaction_digest", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_Performative.transaction_digest", index=0, number=1, type=11, @@ -377,27 +381,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1538, - serialized_end=1661, + serialized_start=1562, + serialized_end=1696, ) _LEDGERAPIMESSAGE_BALANCE_PERFORMATIVE = _descriptor.Descriptor( name="Balance_Performative", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Balance_Performative", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Balance_Performative.ledger_id", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative.ledger_id", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -408,7 +412,7 @@ ), _descriptor.FieldDescriptor( name="balance", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Balance_Performative.balance", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative.balance", index=1, number=2, type=5, @@ -433,20 +437,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1663, - serialized_end=1721, + serialized_start=1698, + serialized_end=1756, ) _LEDGERAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Raw_Transaction_Performative", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Raw_Transaction_Performative", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Raw_Transaction_Performative.raw_transaction", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_Performative.raw_transaction", index=0, number=1, type=11, @@ -471,20 +475,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1723, - serialized_end=1832, + serialized_start=1758, + serialized_end=1878, ) _LEDGERAPIMESSAGE_TRANSACTION_DIGEST_PERFORMATIVE = _descriptor.Descriptor( name="Transaction_Digest_Performative", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Transaction_Digest_Performative", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_digest", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Transaction_Digest_Performative.transaction_digest", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_Performative.transaction_digest", index=0, number=1, type=11, @@ -509,20 +513,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1834, - serialized_end=1952, + serialized_start=1881, + serialized_end=2010, ) _LEDGERAPIMESSAGE_TRANSACTION_RECEIPT_PERFORMATIVE = _descriptor.Descriptor( name="Transaction_Receipt_Performative", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Transaction_Receipt_Performative", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_receipt", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Transaction_Receipt_Performative.transaction_receipt", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_Performative.transaction_receipt", index=0, number=1, type=11, @@ -547,20 +551,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1954, - serialized_end=2075, + serialized_start=2013, + serialized_end=2145, ) _LEDGERAPIMESSAGE_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Error_Performative", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Error_Performative", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="code", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Error_Performative.code", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.code", index=0, number=1, type=5, @@ -578,14 +582,14 @@ ), _descriptor.FieldDescriptor( name="message", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Error_Performative.message", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.message", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -596,7 +600,7 @@ ), _descriptor.FieldDescriptor( name="message_is_set", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Error_Performative.message_is_set", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.message_is_set", index=2, number=3, type=8, @@ -614,14 +618,14 @@ ), _descriptor.FieldDescriptor( name="data", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Error_Performative.data", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.data", index=3, number=4, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -632,7 +636,7 @@ ), _descriptor.FieldDescriptor( name="data_is_set", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.Error_Performative.data_is_set", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.data_is_set", index=4, number=5, type=8, @@ -657,93 +661,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=2077, - serialized_end=2187, + serialized_start=2147, + serialized_end=2257, ) _LEDGERAPIMESSAGE = _descriptor.Descriptor( name="LedgerApiMessage", - full_name="fetch.aea.LedgerApi.LedgerApiMessage", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="balance", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.balance", - index=4, + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.balance", + index=0, number=5, type=11, cpp_type=10, @@ -760,8 +692,8 @@ ), _descriptor.FieldDescriptor( name="error", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.error", - index=5, + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.error", + index=1, number=6, type=11, cpp_type=10, @@ -778,8 +710,8 @@ ), _descriptor.FieldDescriptor( name="get_balance", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.get_balance", - index=6, + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.get_balance", + index=2, number=7, type=11, cpp_type=10, @@ -796,8 +728,8 @@ ), _descriptor.FieldDescriptor( name="get_raw_transaction", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.get_raw_transaction", - index=7, + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.get_raw_transaction", + index=3, number=8, type=11, cpp_type=10, @@ -814,8 +746,8 @@ ), _descriptor.FieldDescriptor( name="get_transaction_receipt", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.get_transaction_receipt", - index=8, + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.get_transaction_receipt", + index=4, number=9, type=11, cpp_type=10, @@ -832,8 +764,8 @@ ), _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.raw_transaction", - index=9, + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.raw_transaction", + index=5, number=10, type=11, cpp_type=10, @@ -850,8 +782,8 @@ ), _descriptor.FieldDescriptor( name="send_signed_transaction", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.send_signed_transaction", - index=10, + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.send_signed_transaction", + index=6, number=11, type=11, cpp_type=10, @@ -868,8 +800,8 @@ ), _descriptor.FieldDescriptor( name="transaction_digest", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.transaction_digest", - index=11, + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.transaction_digest", + index=7, number=12, type=11, cpp_type=10, @@ -886,8 +818,8 @@ ), _descriptor.FieldDescriptor( name="transaction_receipt", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.transaction_receipt", - index=12, + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.transaction_receipt", + index=8, number=13, type=11, cpp_type=10, @@ -928,14 +860,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.LedgerApi.LedgerApiMessage.performative", + full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=42, - serialized_end=2203, + serialized_start=53, + serialized_end=2273, ) _LEDGERAPIMESSAGE_RAWTRANSACTION.containing_type = _LEDGERAPIMESSAGE @@ -1061,137 +993,137 @@ LedgerApiMessage = _reflection.GeneratedProtocolMessageType( "LedgerApiMessage", (_message.Message,), - { - "RawTransaction": _reflection.GeneratedProtocolMessageType( + dict( + RawTransaction=_reflection.GeneratedProtocolMessageType( "RawTransaction", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_RAWTRANSACTION, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.RawTransaction) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_RAWTRANSACTION, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction) + ), ), - "SignedTransaction": _reflection.GeneratedProtocolMessageType( + SignedTransaction=_reflection.GeneratedProtocolMessageType( "SignedTransaction", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_SIGNEDTRANSACTION, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.SignedTransaction) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_SIGNEDTRANSACTION, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction) + ), ), - "Terms": _reflection.GeneratedProtocolMessageType( + Terms=_reflection.GeneratedProtocolMessageType( "Terms", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_TERMS, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.Terms) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_TERMS, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Terms) + ), ), - "TransactionDigest": _reflection.GeneratedProtocolMessageType( + TransactionDigest=_reflection.GeneratedProtocolMessageType( "TransactionDigest", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_TRANSACTIONDIGEST, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.TransactionDigest) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_TRANSACTIONDIGEST, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest) + ), ), - "TransactionReceipt": _reflection.GeneratedProtocolMessageType( + TransactionReceipt=_reflection.GeneratedProtocolMessageType( "TransactionReceipt", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_TRANSACTIONRECEIPT, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.TransactionReceipt) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_TRANSACTIONRECEIPT, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt) + ), ), - "Get_Balance_Performative": _reflection.GeneratedProtocolMessageType( + Get_Balance_Performative=_reflection.GeneratedProtocolMessageType( "Get_Balance_Performative", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_GET_BALANCE_PERFORMATIVE, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.Get_Balance_Performative) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_GET_BALANCE_PERFORMATIVE, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative) + ), ), - "Get_Raw_Transaction_Performative": _reflection.GeneratedProtocolMessageType( + Get_Raw_Transaction_Performative=_reflection.GeneratedProtocolMessageType( "Get_Raw_Transaction_Performative", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.Get_Raw_Transaction_Performative) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_Performative) + ), ), - "Send_Signed_Transaction_Performative": _reflection.GeneratedProtocolMessageType( + Send_Signed_Transaction_Performative=_reflection.GeneratedProtocolMessageType( "Send_Signed_Transaction_Performative", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_SEND_SIGNED_TRANSACTION_PERFORMATIVE, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.Send_Signed_Transaction_Performative) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_SEND_SIGNED_TRANSACTION_PERFORMATIVE, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_Performative) + ), ), - "Get_Transaction_Receipt_Performative": _reflection.GeneratedProtocolMessageType( + Get_Transaction_Receipt_Performative=_reflection.GeneratedProtocolMessageType( "Get_Transaction_Receipt_Performative", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_GET_TRANSACTION_RECEIPT_PERFORMATIVE, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.Get_Transaction_Receipt_Performative) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_GET_TRANSACTION_RECEIPT_PERFORMATIVE, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_Performative) + ), ), - "Balance_Performative": _reflection.GeneratedProtocolMessageType( + Balance_Performative=_reflection.GeneratedProtocolMessageType( "Balance_Performative", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_BALANCE_PERFORMATIVE, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.Balance_Performative) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_BALANCE_PERFORMATIVE, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative) + ), ), - "Raw_Transaction_Performative": _reflection.GeneratedProtocolMessageType( + Raw_Transaction_Performative=_reflection.GeneratedProtocolMessageType( "Raw_Transaction_Performative", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.Raw_Transaction_Performative) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_Performative) + ), ), - "Transaction_Digest_Performative": _reflection.GeneratedProtocolMessageType( + Transaction_Digest_Performative=_reflection.GeneratedProtocolMessageType( "Transaction_Digest_Performative", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_TRANSACTION_DIGEST_PERFORMATIVE, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.Transaction_Digest_Performative) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_TRANSACTION_DIGEST_PERFORMATIVE, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_Performative) + ), ), - "Transaction_Receipt_Performative": _reflection.GeneratedProtocolMessageType( + Transaction_Receipt_Performative=_reflection.GeneratedProtocolMessageType( "Transaction_Receipt_Performative", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_TRANSACTION_RECEIPT_PERFORMATIVE, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.Transaction_Receipt_Performative) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_TRANSACTION_RECEIPT_PERFORMATIVE, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_Performative) + ), ), - "Error_Performative": _reflection.GeneratedProtocolMessageType( + Error_Performative=_reflection.GeneratedProtocolMessageType( "Error_Performative", (_message.Message,), - { - "DESCRIPTOR": _LEDGERAPIMESSAGE_ERROR_PERFORMATIVE, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage.Error_Performative) - }, + dict( + DESCRIPTOR=_LEDGERAPIMESSAGE_ERROR_PERFORMATIVE, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative) + ), ), - "DESCRIPTOR": _LEDGERAPIMESSAGE, - "__module__": "ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.LedgerApi.LedgerApiMessage) - }, + DESCRIPTOR=_LEDGERAPIMESSAGE, + __module__="ledger_api_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage) + ), ) _sym_db.RegisterMessage(LedgerApiMessage) _sym_db.RegisterMessage(LedgerApiMessage.RawTransaction) diff --git a/packages/fetchai/protocols/ledger_api/protocol.yaml b/packages/fetchai/protocols/ledger_api/protocol.yaml index a3f92d5551..21e28bccdc 100644 --- a/packages/fetchai/protocols/ledger_api/protocol.yaml +++ b/packages/fetchai/protocols/ledger_api/protocol.yaml @@ -10,10 +10,10 @@ fingerprint: __init__.py: Qmct8jVx6ndWwaa5HXJAJgMraVuZ8kMeyx6rnEeHAYHwDJ custom_types.py: QmWRrvFStMhVJy8P2WD6qjDgk14ZnxErN7XymxUtof7HQo dialogues.py: QmRtWkAfR9WTvygMJ36R758RzdY2mGQs2fgtHCfjxmeaHy - ledger_api.proto: QmfLcv7jJcGJ1gAdCMqsyxJcRud7RaTWteSXHL5NvGuViP - ledger_api_pb2.py: QmQhM848REJTDKDoiqxkTniChW8bNNm66EtwMRkvVdbMry + ledger_api.proto: QmSGwWr8LUz1FHeNXQFsrAKxsyibvzao6WBHvzWF2peg2u + ledger_api_pb2.py: QmbtzWSYdAQZjq6rq79Zq7BgRhT4QVEsXwcJwmT6xhGXHf message.py: QmcLuy4YcL22qs3jHf5KHZ7vZueiTDrEmbWjfRTbyzwc5m - serialization.py: QmUvysZKkt5xLKLVHAyaZQ3jsRDkPn5bJURdsTDHgkE3HS + serialization.py: QmSarPknCq2LiKZx3PHgE9eXhrygPSyiu15WCS46W9BD3E fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/ledger_api/serialization.py b/packages/fetchai/protocols/ledger_api/serialization.py index ac850b11e3..88c13acd87 100644 --- a/packages/fetchai/protocols/ledger_api/serialization.py +++ b/packages/fetchai/protocols/ledger_api/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer @@ -45,12 +46,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(LedgerApiMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() ledger_api_msg = ledger_api_pb2.LedgerApiMessage() - ledger_api_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - ledger_api_msg.dialogue_starter_reference = dialogue_reference[0] - ledger_api_msg.dialogue_responder_reference = dialogue_reference[1] - ledger_api_msg.target = msg.target + 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 == LedgerApiMessage.Performative.GET_BALANCE: @@ -121,8 +125,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - ledger_api_bytes = ledger_api_msg.SerializeToString() - return ledger_api_bytes + dialogue_message_pb.content = ledger_api_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -132,15 +139,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'LedgerApi' message. """ + message_pb = ProtobufMessage() ledger_api_pb = ledger_api_pb2.LedgerApiMessage() - ledger_api_pb.ParseFromString(obj) - message_id = ledger_api_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - ledger_api_pb.dialogue_starter_reference, - ledger_api_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = ledger_api_pb.target + target = message_pb.dialogue_message.target + ledger_api_pb.ParseFromString(message_pb.dialogue_message.content) performative = ledger_api_pb.WhichOneof("performative") performative_id = LedgerApiMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/packages/fetchai/protocols/ml_trade/ml_trade.proto b/packages/fetchai/protocols/ml_trade/ml_trade.proto index 65ac07b8d6..83578150d1 100644 --- a/packages/fetchai/protocols/ml_trade/ml_trade.proto +++ b/packages/fetchai/protocols/ml_trade/ml_trade.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.MlTrade; +package fetchai.aea.fetchai.ml_trade; message MlTradeMessage{ @@ -40,11 +40,6 @@ message MlTradeMessage{ } - // Standard MlTradeMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Accept_Performative accept = 5; Cfp_Performative cfp = 6; diff --git a/packages/fetchai/protocols/ml_trade/ml_trade_pb2.py b/packages/fetchai/protocols/ml_trade/ml_trade_pb2.py index d12c7cd681..7eae74b29c 100644 --- a/packages/fetchai/protocols/ml_trade/ml_trade_pb2.py +++ b/packages/fetchai/protocols/ml_trade/ml_trade_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: ml_trade.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -14,30 +16,32 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="ml_trade.proto", - package="fetch.aea.MlTrade", + package="fetchai.aea.fetchai.ml_trade", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\x0eml_trade.proto\x12\x11\x66\x65tch.aea.MlTrade"\xc0\x07\n\x0eMlTradeMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12G\n\x06\x61\x63\x63\x65pt\x18\x05 \x01(\x0b\x32\x35.fetch.aea.MlTrade.MlTradeMessage.Accept_PerformativeH\x00\x12\x41\n\x03\x63\x66p\x18\x06 \x01(\x0b\x32\x32.fetch.aea.MlTrade.MlTradeMessage.Cfp_PerformativeH\x00\x12\x43\n\x04\x64\x61ta\x18\x07 \x01(\x0b\x32\x33.fetch.aea.MlTrade.MlTradeMessage.Data_PerformativeH\x00\x12\x45\n\x05terms\x18\x08 \x01(\x0b\x32\x34.fetch.aea.MlTrade.MlTradeMessage.Terms_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\x87\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12\x42\n\x07nothing\x18\x02 \x01(\x0b\x32/.fetch.aea.MlTrade.MlTradeMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1aJ\n\x10\x43\x66p_Performative\x12\x36\n\x05query\x18\x01 \x01(\x0b\x32\'.fetch.aea.MlTrade.MlTradeMessage.Query\x1aR\n\x12Terms_Performative\x12<\n\x05terms\x18\x01 \x01(\x0b\x32-.fetch.aea.MlTrade.MlTradeMessage.Description\x1a\x66\n\x13\x41\x63\x63\x65pt_Performative\x12<\n\x05terms\x18\x01 \x01(\x0b\x32-.fetch.aea.MlTrade.MlTradeMessage.Description\x12\x11\n\ttx_digest\x18\x02 \x01(\t\x1a\x62\n\x11\x44\x61ta_Performative\x12<\n\x05terms\x18\x01 \x01(\x0b\x32-.fetch.aea.MlTrade.MlTradeMessage.Description\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\x0eml_trade.proto\x12\x1c\x66\x65tchai.aea.fetchai.ml_trade"\xb5\x07\n\x0eMlTradeMessage\x12R\n\x06\x61\x63\x63\x65pt\x18\x05 \x01(\x0b\x32@.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Accept_PerformativeH\x00\x12L\n\x03\x63\x66p\x18\x06 \x01(\x0b\x32=.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Cfp_PerformativeH\x00\x12N\n\x04\x64\x61ta\x18\x07 \x01(\x0b\x32>.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Data_PerformativeH\x00\x12P\n\x05terms\x18\x08 \x01(\x0b\x32?.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Terms_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\x92\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12M\n\x07nothing\x18\x02 \x01(\x0b\x32:.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1aU\n\x10\x43\x66p_Performative\x12\x41\n\x05query\x18\x01 \x01(\x0b\x32\x32.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query\x1a]\n\x12Terms_Performative\x12G\n\x05terms\x18\x01 \x01(\x0b\x32\x38.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description\x1aq\n\x13\x41\x63\x63\x65pt_Performative\x12G\n\x05terms\x18\x01 \x01(\x0b\x32\x38.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description\x12\x11\n\ttx_digest\x18\x02 \x01(\t\x1am\n\x11\x44\x61ta_Performative\x12G\n\x05terms\x18\x01 \x01(\x0b\x32\x38.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3' + ), ) _MLTRADEMESSAGE_DESCRIPTION = _descriptor.Descriptor( name="Description", - full_name="fetch.aea.MlTrade.MlTradeMessage.Description", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="description", - full_name="fetch.aea.MlTrade.MlTradeMessage.Description.description", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description.description", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -55,13 +59,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=446, - serialized_end=480, + serialized_start=391, + serialized_end=425, ) _MLTRADEMESSAGE_QUERY_NOTHING = _descriptor.Descriptor( name="Nothing", - full_name="fetch.aea.MlTrade.MlTradeMessage.Query.Nothing", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.Nothing", filename=None, file=DESCRIPTOR, containing_type=None, @@ -74,27 +78,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=600, - serialized_end=609, + serialized_start=556, + serialized_end=565, ) _MLTRADEMESSAGE_QUERY = _descriptor.Descriptor( name="Query", - full_name="fetch.aea.MlTrade.MlTradeMessage.Query", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="bytes", - full_name="fetch.aea.MlTrade.MlTradeMessage.Query.bytes", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.bytes", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -105,7 +109,7 @@ ), _descriptor.FieldDescriptor( name="nothing", - full_name="fetch.aea.MlTrade.MlTradeMessage.Query.nothing", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.nothing", index=1, number=2, type=11, @@ -123,14 +127,14 @@ ), _descriptor.FieldDescriptor( name="query_bytes", - full_name="fetch.aea.MlTrade.MlTradeMessage.Query.query_bytes", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.query_bytes", index=2, number=3, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -150,26 +154,26 @@ oneofs=[ _descriptor.OneofDescriptor( name="query", - full_name="fetch.aea.MlTrade.MlTradeMessage.Query.query", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.query", index=0, containing_type=None, fields=[], ), ], - serialized_start=483, - serialized_end=618, + serialized_start=428, + serialized_end=574, ) _MLTRADEMESSAGE_CFP_PERFORMATIVE = _descriptor.Descriptor( name="Cfp_Performative", - full_name="fetch.aea.MlTrade.MlTradeMessage.Cfp_Performative", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Cfp_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="query", - full_name="fetch.aea.MlTrade.MlTradeMessage.Cfp_Performative.query", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Cfp_Performative.query", index=0, number=1, type=11, @@ -194,20 +198,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=620, - serialized_end=694, + serialized_start=576, + serialized_end=661, ) _MLTRADEMESSAGE_TERMS_PERFORMATIVE = _descriptor.Descriptor( name="Terms_Performative", - full_name="fetch.aea.MlTrade.MlTradeMessage.Terms_Performative", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Terms_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetch.aea.MlTrade.MlTradeMessage.Terms_Performative.terms", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Terms_Performative.terms", index=0, number=1, type=11, @@ -232,20 +236,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=696, - serialized_end=778, + serialized_start=663, + serialized_end=756, ) _MLTRADEMESSAGE_ACCEPT_PERFORMATIVE = _descriptor.Descriptor( name="Accept_Performative", - full_name="fetch.aea.MlTrade.MlTradeMessage.Accept_Performative", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetch.aea.MlTrade.MlTradeMessage.Accept_Performative.terms", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative.terms", index=0, number=1, type=11, @@ -263,14 +267,14 @@ ), _descriptor.FieldDescriptor( name="tx_digest", - full_name="fetch.aea.MlTrade.MlTradeMessage.Accept_Performative.tx_digest", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative.tx_digest", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -288,20 +292,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=780, - serialized_end=882, + serialized_start=758, + serialized_end=871, ) _MLTRADEMESSAGE_DATA_PERFORMATIVE = _descriptor.Descriptor( name="Data_Performative", - full_name="fetch.aea.MlTrade.MlTradeMessage.Data_Performative", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Data_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetch.aea.MlTrade.MlTradeMessage.Data_Performative.terms", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Data_Performative.terms", index=0, number=1, type=11, @@ -319,14 +323,14 @@ ), _descriptor.FieldDescriptor( name="payload", - full_name="fetch.aea.MlTrade.MlTradeMessage.Data_Performative.payload", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Data_Performative.payload", index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -344,93 +348,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=884, + serialized_start=873, serialized_end=982, ) _MLTRADEMESSAGE = _descriptor.Descriptor( name="MlTradeMessage", - full_name="fetch.aea.MlTrade.MlTradeMessage", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.MlTrade.MlTradeMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.MlTrade.MlTradeMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.MlTrade.MlTradeMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.MlTrade.MlTradeMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="accept", - full_name="fetch.aea.MlTrade.MlTradeMessage.accept", - index=4, + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.accept", + index=0, number=5, type=11, cpp_type=10, @@ -447,8 +379,8 @@ ), _descriptor.FieldDescriptor( name="cfp", - full_name="fetch.aea.MlTrade.MlTradeMessage.cfp", - index=5, + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.cfp", + index=1, number=6, type=11, cpp_type=10, @@ -465,8 +397,8 @@ ), _descriptor.FieldDescriptor( name="data", - full_name="fetch.aea.MlTrade.MlTradeMessage.data", - index=6, + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.data", + index=2, number=7, type=11, cpp_type=10, @@ -483,8 +415,8 @@ ), _descriptor.FieldDescriptor( name="terms", - full_name="fetch.aea.MlTrade.MlTradeMessage.terms", - index=7, + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.terms", + index=3, number=8, type=11, cpp_type=10, @@ -517,13 +449,13 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.MlTrade.MlTradeMessage.performative", + full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=38, + serialized_start=49, serialized_end=998, ) @@ -605,74 +537,74 @@ MlTradeMessage = _reflection.GeneratedProtocolMessageType( "MlTradeMessage", (_message.Message,), - { - "Description": _reflection.GeneratedProtocolMessageType( + dict( + Description=_reflection.GeneratedProtocolMessageType( "Description", (_message.Message,), - { - "DESCRIPTOR": _MLTRADEMESSAGE_DESCRIPTION, - "__module__": "ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.MlTrade.MlTradeMessage.Description) - }, + dict( + DESCRIPTOR=_MLTRADEMESSAGE_DESCRIPTION, + __module__="ml_trade_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description) + ), ), - "Query": _reflection.GeneratedProtocolMessageType( + Query=_reflection.GeneratedProtocolMessageType( "Query", (_message.Message,), - { - "Nothing": _reflection.GeneratedProtocolMessageType( + dict( + Nothing=_reflection.GeneratedProtocolMessageType( "Nothing", (_message.Message,), - { - "DESCRIPTOR": _MLTRADEMESSAGE_QUERY_NOTHING, - "__module__": "ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.MlTrade.MlTradeMessage.Query.Nothing) - }, + dict( + DESCRIPTOR=_MLTRADEMESSAGE_QUERY_NOTHING, + __module__="ml_trade_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.Nothing) + ), ), - "DESCRIPTOR": _MLTRADEMESSAGE_QUERY, - "__module__": "ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.MlTrade.MlTradeMessage.Query) - }, + DESCRIPTOR=_MLTRADEMESSAGE_QUERY, + __module__="ml_trade_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query) + ), ), - "Cfp_Performative": _reflection.GeneratedProtocolMessageType( + Cfp_Performative=_reflection.GeneratedProtocolMessageType( "Cfp_Performative", (_message.Message,), - { - "DESCRIPTOR": _MLTRADEMESSAGE_CFP_PERFORMATIVE, - "__module__": "ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.MlTrade.MlTradeMessage.Cfp_Performative) - }, + dict( + DESCRIPTOR=_MLTRADEMESSAGE_CFP_PERFORMATIVE, + __module__="ml_trade_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Cfp_Performative) + ), ), - "Terms_Performative": _reflection.GeneratedProtocolMessageType( + Terms_Performative=_reflection.GeneratedProtocolMessageType( "Terms_Performative", (_message.Message,), - { - "DESCRIPTOR": _MLTRADEMESSAGE_TERMS_PERFORMATIVE, - "__module__": "ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.MlTrade.MlTradeMessage.Terms_Performative) - }, + dict( + DESCRIPTOR=_MLTRADEMESSAGE_TERMS_PERFORMATIVE, + __module__="ml_trade_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Terms_Performative) + ), ), - "Accept_Performative": _reflection.GeneratedProtocolMessageType( + Accept_Performative=_reflection.GeneratedProtocolMessageType( "Accept_Performative", (_message.Message,), - { - "DESCRIPTOR": _MLTRADEMESSAGE_ACCEPT_PERFORMATIVE, - "__module__": "ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.MlTrade.MlTradeMessage.Accept_Performative) - }, + dict( + DESCRIPTOR=_MLTRADEMESSAGE_ACCEPT_PERFORMATIVE, + __module__="ml_trade_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative) + ), ), - "Data_Performative": _reflection.GeneratedProtocolMessageType( + Data_Performative=_reflection.GeneratedProtocolMessageType( "Data_Performative", (_message.Message,), - { - "DESCRIPTOR": _MLTRADEMESSAGE_DATA_PERFORMATIVE, - "__module__": "ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.MlTrade.MlTradeMessage.Data_Performative) - }, + dict( + DESCRIPTOR=_MLTRADEMESSAGE_DATA_PERFORMATIVE, + __module__="ml_trade_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Data_Performative) + ), ), - "DESCRIPTOR": _MLTRADEMESSAGE, - "__module__": "ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.MlTrade.MlTradeMessage) - }, + DESCRIPTOR=_MLTRADEMESSAGE, + __module__="ml_trade_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage) + ), ) _sym_db.RegisterMessage(MlTradeMessage) _sym_db.RegisterMessage(MlTradeMessage.Description) diff --git a/packages/fetchai/protocols/ml_trade/protocol.yaml b/packages/fetchai/protocols/ml_trade/protocol.yaml index 1863dda440..0593cf1ffe 100644 --- a/packages/fetchai/protocols/ml_trade/protocol.yaml +++ b/packages/fetchai/protocols/ml_trade/protocol.yaml @@ -11,9 +11,9 @@ fingerprint: custom_types.py: QmPa6mxbN8WShsniQxJACfzAPRjGzYLbUFGoVU4N9DewUw dialogues.py: QmVvP34aKWEtHrKmccNMvEdDnx5B7xpE5aEGzr6GU2u8UK message.py: QmZdRAScKbmJgKVbRJvDyMUNfRZKWCwWFYjGNDDBAq5fUT - ml_trade.proto: QmeB21MQduEGQCrtiYZQzPpRqHL4CWEkvvcaKZ9GsfE8f6 - ml_trade_pb2.py: QmZVvugPysR1og6kWCJkvo3af2s9pQRHfuj4BptE7gU1EU - serialization.py: QmSHywy12uQkzakU1RHnnkaPuTzaFTALsKisyYF8dPc8ns + ml_trade.proto: QmWzG9xmAQiuAj7sphQ8BzRUPXs7xagNWMzNw84Pfc7kq9 + ml_trade_pb2.py: QmNyzB6eJXYPwTptFLHguYW9NJLEMCSFE5rorY1xn9mmPF + serialization.py: QmTfLdYfJnA8VTxtat5vgsfms7dJJF4zwuxYGxh9pDRALr fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/ml_trade/serialization.py b/packages/fetchai/protocols/ml_trade/serialization.py index ab0e4574dc..b67dfb5667 100644 --- a/packages/fetchai/protocols/ml_trade/serialization.py +++ b/packages/fetchai/protocols/ml_trade/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer @@ -42,12 +43,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(MlTradeMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() ml_trade_msg = ml_trade_pb2.MlTradeMessage() - ml_trade_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - ml_trade_msg.dialogue_starter_reference = dialogue_reference[0] - ml_trade_msg.dialogue_responder_reference = dialogue_reference[1] - ml_trade_msg.target = msg.target + 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 == MlTradeMessage.Performative.CFP: @@ -77,8 +81,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - ml_trade_bytes = ml_trade_msg.SerializeToString() - return ml_trade_bytes + dialogue_message_pb.content = ml_trade_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -88,15 +95,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'MlTrade' message. """ + message_pb = ProtobufMessage() ml_trade_pb = ml_trade_pb2.MlTradeMessage() - ml_trade_pb.ParseFromString(obj) - message_id = ml_trade_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - ml_trade_pb.dialogue_starter_reference, - ml_trade_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = ml_trade_pb.target + target = message_pb.dialogue_message.target + ml_trade_pb.ParseFromString(message_pb.dialogue_message.content) performative = ml_trade_pb.WhichOneof("performative") performative_id = MlTradeMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/packages/fetchai/protocols/oef_search/oef_search.proto b/packages/fetchai/protocols/oef_search/oef_search.proto index 5ef2c45e07..475fcb3ca2 100644 --- a/packages/fetchai/protocols/oef_search/oef_search.proto +++ b/packages/fetchai/protocols/oef_search/oef_search.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.OefSearch; +package fetchai.aea.fetchai.oef_search; message OefSearchMessage{ @@ -52,11 +52,6 @@ message OefSearchMessage{ } - // Standard OefSearchMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Oef_Error_Performative oef_error = 5; Register_Service_Performative register_service = 6; diff --git a/packages/fetchai/protocols/oef_search/oef_search_pb2.py b/packages/fetchai/protocols/oef_search/oef_search_pb2.py index 1510e23e61..5e425840d1 100644 --- a/packages/fetchai/protocols/oef_search/oef_search_pb2.py +++ b/packages/fetchai/protocols/oef_search/oef_search_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: oef_search.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -14,16 +16,18 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="oef_search.proto", - package="fetch.aea.OefSearch", + package="fetchai.aea.fetchai.oef_search", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\x10oef_search.proto\x12\x13\x66\x65tch.aea.OefSearch"\xc7\x0b\n\x10OefSearchMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12Q\n\toef_error\x18\x05 \x01(\x0b\x32<.fetch.aea.OefSearch.OefSearchMessage.Oef_Error_PerformativeH\x00\x12_\n\x10register_service\x18\x06 \x01(\x0b\x32\x43.fetch.aea.OefSearch.OefSearchMessage.Register_Service_PerformativeH\x00\x12Y\n\rsearch_result\x18\x07 \x01(\x0b\x32@.fetch.aea.OefSearch.OefSearchMessage.Search_Result_PerformativeH\x00\x12]\n\x0fsearch_services\x18\x08 \x01(\x0b\x32\x42.fetch.aea.OefSearch.OefSearchMessage.Search_Services_PerformativeH\x00\x12\x63\n\x12unregister_service\x18\t \x01(\x0b\x32\x45.fetch.aea.OefSearch.OefSearchMessage.Unregister_Service_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\xd1\x01\n\x11OefErrorOperation\x12W\n\toef_error\x18\x01 \x01(\x0e\x32\x44.fetch.aea.OefSearch.OefSearchMessage.OefErrorOperation.OefErrorEnum"c\n\x0cOefErrorEnum\x12\x14\n\x10REGISTER_SERVICE\x10\x00\x12\x16\n\x12UNREGISTER_SERVICE\x10\x01\x12\x13\n\x0fSEARCH_SERVICES\x10\x02\x12\x10\n\x0cSEND_MESSAGE\x10\x03\x1a\x8b\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12\x46\n\x07nothing\x18\x02 \x01(\x0b\x32\x33.fetch.aea.OefSearch.OefSearchMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1ao\n\x1dRegister_Service_Performative\x12N\n\x13service_description\x18\x01 \x01(\x0b\x32\x31.fetch.aea.OefSearch.OefSearchMessage.Description\x1aq\n\x1fUnregister_Service_Performative\x12N\n\x13service_description\x18\x01 \x01(\x0b\x32\x31.fetch.aea.OefSearch.OefSearchMessage.Description\x1aZ\n\x1cSearch_Services_Performative\x12:\n\x05query\x18\x01 \x01(\x0b\x32+.fetch.aea.OefSearch.OefSearchMessage.Query\x1a,\n\x1aSearch_Result_Performative\x12\x0e\n\x06\x61gents\x18\x01 \x03(\t\x1an\n\x16Oef_Error_Performative\x12T\n\x13oef_error_operation\x18\x01 \x01(\x0b\x32\x37.fetch.aea.OefSearch.OefSearchMessage.OefErrorOperationB\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\x10oef_search.proto\x12\x1e\x66\x65tchai.aea.fetchai.oef_search"\xd2\x0b\n\x10OefSearchMessage\x12\\\n\toef_error\x18\x05 \x01(\x0b\x32G.fetchai.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_PerformativeH\x00\x12j\n\x10register_service\x18\x06 \x01(\x0b\x32N.fetchai.aea.fetchai.oef_search.OefSearchMessage.Register_Service_PerformativeH\x00\x12\x64\n\rsearch_result\x18\x07 \x01(\x0b\x32K.fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_PerformativeH\x00\x12h\n\x0fsearch_services\x18\x08 \x01(\x0b\x32M.fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Services_PerformativeH\x00\x12n\n\x12unregister_service\x18\t \x01(\x0b\x32P.fetchai.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\xdc\x01\n\x11OefErrorOperation\x12\x62\n\toef_error\x18\x01 \x01(\x0e\x32O.fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.OefErrorEnum"c\n\x0cOefErrorEnum\x12\x14\n\x10REGISTER_SERVICE\x10\x00\x12\x16\n\x12UNREGISTER_SERVICE\x10\x01\x12\x13\n\x0fSEARCH_SERVICES\x10\x02\x12\x10\n\x0cSEND_MESSAGE\x10\x03\x1a\x96\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12Q\n\x07nothing\x18\x02 \x01(\x0b\x32>.fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1az\n\x1dRegister_Service_Performative\x12Y\n\x13service_description\x18\x01 \x01(\x0b\x32<.fetchai.aea.fetchai.oef_search.OefSearchMessage.Description\x1a|\n\x1fUnregister_Service_Performative\x12Y\n\x13service_description\x18\x01 \x01(\x0b\x32<.fetchai.aea.fetchai.oef_search.OefSearchMessage.Description\x1a\x65\n\x1cSearch_Services_Performative\x12\x45\n\x05query\x18\x01 \x01(\x0b\x32\x36.fetchai.aea.fetchai.oef_search.OefSearchMessage.Query\x1a,\n\x1aSearch_Result_Performative\x12\x0e\n\x06\x61gents\x18\x01 \x03(\t\x1ay\n\x16Oef_Error_Performative\x12_\n\x13oef_error_operation\x18\x01 \x01(\x0b\x32\x42.fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperationB\x0e\n\x0cperformativeb\x06proto3' + ), ) _OEFSEARCHMESSAGE_OEFERROROPERATION_OEFERRORENUM = _descriptor.EnumDescriptor( name="OefErrorEnum", - full_name="fetch.aea.OefSearch.OefSearchMessage.OefErrorOperation.OefErrorEnum", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.OefErrorEnum", filename=None, file=DESCRIPTOR, values=[ @@ -54,29 +58,29 @@ ], containing_type=None, serialized_options=None, - serialized_start=786, - serialized_end=885, + serialized_start=753, + serialized_end=852, ) _sym_db.RegisterEnumDescriptor(_OEFSEARCHMESSAGE_OEFERROROPERATION_OEFERRORENUM) _OEFSEARCHMESSAGE_DESCRIPTION = _descriptor.Descriptor( name="Description", - full_name="fetch.aea.OefSearch.OefSearchMessage.Description", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Description", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="description", - full_name="fetch.aea.OefSearch.OefSearchMessage.Description.description", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Description.description", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -94,20 +98,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=639, - serialized_end=673, + serialized_start=595, + serialized_end=629, ) _OEFSEARCHMESSAGE_OEFERROROPERATION = _descriptor.Descriptor( name="OefErrorOperation", - full_name="fetch.aea.OefSearch.OefSearchMessage.OefErrorOperation", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="oef_error", - full_name="fetch.aea.OefSearch.OefSearchMessage.OefErrorOperation.oef_error", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.oef_error", index=0, number=1, type=14, @@ -132,13 +136,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=676, - serialized_end=885, + serialized_start=632, + serialized_end=852, ) _OEFSEARCHMESSAGE_QUERY_NOTHING = _descriptor.Descriptor( name="Nothing", - full_name="fetch.aea.OefSearch.OefSearchMessage.Query.Nothing", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.Nothing", filename=None, file=DESCRIPTOR, containing_type=None, @@ -151,27 +155,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1009, - serialized_end=1018, + serialized_start=987, + serialized_end=996, ) _OEFSEARCHMESSAGE_QUERY = _descriptor.Descriptor( name="Query", - full_name="fetch.aea.OefSearch.OefSearchMessage.Query", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="bytes", - full_name="fetch.aea.OefSearch.OefSearchMessage.Query.bytes", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.bytes", index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -182,7 +186,7 @@ ), _descriptor.FieldDescriptor( name="nothing", - full_name="fetch.aea.OefSearch.OefSearchMessage.Query.nothing", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.nothing", index=1, number=2, type=11, @@ -200,14 +204,14 @@ ), _descriptor.FieldDescriptor( name="query_bytes", - full_name="fetch.aea.OefSearch.OefSearchMessage.Query.query_bytes", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.query_bytes", index=2, number=3, type=12, cpp_type=9, label=1, has_default_value=False, - default_value=b"", + default_value=_b(""), message_type=None, enum_type=None, containing_type=None, @@ -227,26 +231,26 @@ oneofs=[ _descriptor.OneofDescriptor( name="query", - full_name="fetch.aea.OefSearch.OefSearchMessage.Query.query", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.query", index=0, containing_type=None, fields=[], ), ], - serialized_start=888, - serialized_end=1027, + serialized_start=855, + serialized_end=1005, ) _OEFSEARCHMESSAGE_REGISTER_SERVICE_PERFORMATIVE = _descriptor.Descriptor( name="Register_Service_Performative", - full_name="fetch.aea.OefSearch.OefSearchMessage.Register_Service_Performative", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Register_Service_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="service_description", - full_name="fetch.aea.OefSearch.OefSearchMessage.Register_Service_Performative.service_description", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Register_Service_Performative.service_description", index=0, number=1, type=11, @@ -271,20 +275,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1029, - serialized_end=1140, + serialized_start=1007, + serialized_end=1129, ) _OEFSEARCHMESSAGE_UNREGISTER_SERVICE_PERFORMATIVE = _descriptor.Descriptor( name="Unregister_Service_Performative", - full_name="fetch.aea.OefSearch.OefSearchMessage.Unregister_Service_Performative", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="service_description", - full_name="fetch.aea.OefSearch.OefSearchMessage.Unregister_Service_Performative.service_description", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_Performative.service_description", index=0, number=1, type=11, @@ -309,20 +313,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1142, + serialized_start=1131, serialized_end=1255, ) _OEFSEARCHMESSAGE_SEARCH_SERVICES_PERFORMATIVE = _descriptor.Descriptor( name="Search_Services_Performative", - full_name="fetch.aea.OefSearch.OefSearchMessage.Search_Services_Performative", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Services_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="query", - full_name="fetch.aea.OefSearch.OefSearchMessage.Search_Services_Performative.query", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Services_Performative.query", index=0, number=1, type=11, @@ -348,19 +352,19 @@ extension_ranges=[], oneofs=[], serialized_start=1257, - serialized_end=1347, + serialized_end=1358, ) _OEFSEARCHMESSAGE_SEARCH_RESULT_PERFORMATIVE = _descriptor.Descriptor( name="Search_Result_Performative", - full_name="fetch.aea.OefSearch.OefSearchMessage.Search_Result_Performative", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="agents", - full_name="fetch.aea.OefSearch.OefSearchMessage.Search_Result_Performative.agents", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative.agents", index=0, number=1, type=9, @@ -385,20 +389,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1349, - serialized_end=1393, + serialized_start=1360, + serialized_end=1404, ) _OEFSEARCHMESSAGE_OEF_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Oef_Error_Performative", - full_name="fetch.aea.OefSearch.OefSearchMessage.Oef_Error_Performative", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="oef_error_operation", - full_name="fetch.aea.OefSearch.OefSearchMessage.Oef_Error_Performative.oef_error_operation", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_Performative.oef_error_operation", index=0, number=1, type=11, @@ -423,93 +427,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1395, - serialized_end=1505, + serialized_start=1406, + serialized_end=1527, ) _OEFSEARCHMESSAGE = _descriptor.Descriptor( name="OefSearchMessage", - full_name="fetch.aea.OefSearch.OefSearchMessage", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.OefSearch.OefSearchMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.OefSearch.OefSearchMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.OefSearch.OefSearchMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.OefSearch.OefSearchMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="oef_error", - full_name="fetch.aea.OefSearch.OefSearchMessage.oef_error", - index=4, + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.oef_error", + index=0, number=5, type=11, cpp_type=10, @@ -526,8 +458,8 @@ ), _descriptor.FieldDescriptor( name="register_service", - full_name="fetch.aea.OefSearch.OefSearchMessage.register_service", - index=5, + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.register_service", + index=1, number=6, type=11, cpp_type=10, @@ -544,8 +476,8 @@ ), _descriptor.FieldDescriptor( name="search_result", - full_name="fetch.aea.OefSearch.OefSearchMessage.search_result", - index=6, + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.search_result", + index=2, number=7, type=11, cpp_type=10, @@ -562,8 +494,8 @@ ), _descriptor.FieldDescriptor( name="search_services", - full_name="fetch.aea.OefSearch.OefSearchMessage.search_services", - index=7, + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.search_services", + index=3, number=8, type=11, cpp_type=10, @@ -580,8 +512,8 @@ ), _descriptor.FieldDescriptor( name="unregister_service", - full_name="fetch.aea.OefSearch.OefSearchMessage.unregister_service", - index=8, + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.unregister_service", + index=4, number=9, type=11, cpp_type=10, @@ -616,14 +548,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.OefSearch.OefSearchMessage.performative", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=42, - serialized_end=1521, + serialized_start=53, + serialized_end=1543, ) _OEFSEARCHMESSAGE_DESCRIPTION.containing_type = _OEFSEARCHMESSAGE @@ -725,92 +657,92 @@ OefSearchMessage = _reflection.GeneratedProtocolMessageType( "OefSearchMessage", (_message.Message,), - { - "Description": _reflection.GeneratedProtocolMessageType( + dict( + Description=_reflection.GeneratedProtocolMessageType( "Description", (_message.Message,), - { - "DESCRIPTOR": _OEFSEARCHMESSAGE_DESCRIPTION, - "__module__": "oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.OefSearch.OefSearchMessage.Description) - }, + dict( + DESCRIPTOR=_OEFSEARCHMESSAGE_DESCRIPTION, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Description) + ), ), - "OefErrorOperation": _reflection.GeneratedProtocolMessageType( + OefErrorOperation=_reflection.GeneratedProtocolMessageType( "OefErrorOperation", (_message.Message,), - { - "DESCRIPTOR": _OEFSEARCHMESSAGE_OEFERROROPERATION, - "__module__": "oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.OefSearch.OefSearchMessage.OefErrorOperation) - }, + dict( + DESCRIPTOR=_OEFSEARCHMESSAGE_OEFERROROPERATION, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation) + ), ), - "Query": _reflection.GeneratedProtocolMessageType( + Query=_reflection.GeneratedProtocolMessageType( "Query", (_message.Message,), - { - "Nothing": _reflection.GeneratedProtocolMessageType( + dict( + Nothing=_reflection.GeneratedProtocolMessageType( "Nothing", (_message.Message,), - { - "DESCRIPTOR": _OEFSEARCHMESSAGE_QUERY_NOTHING, - "__module__": "oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.OefSearch.OefSearchMessage.Query.Nothing) - }, + dict( + DESCRIPTOR=_OEFSEARCHMESSAGE_QUERY_NOTHING, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.Nothing) + ), ), - "DESCRIPTOR": _OEFSEARCHMESSAGE_QUERY, - "__module__": "oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.OefSearch.OefSearchMessage.Query) - }, + DESCRIPTOR=_OEFSEARCHMESSAGE_QUERY, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Query) + ), ), - "Register_Service_Performative": _reflection.GeneratedProtocolMessageType( + Register_Service_Performative=_reflection.GeneratedProtocolMessageType( "Register_Service_Performative", (_message.Message,), - { - "DESCRIPTOR": _OEFSEARCHMESSAGE_REGISTER_SERVICE_PERFORMATIVE, - "__module__": "oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.OefSearch.OefSearchMessage.Register_Service_Performative) - }, + dict( + DESCRIPTOR=_OEFSEARCHMESSAGE_REGISTER_SERVICE_PERFORMATIVE, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Register_Service_Performative) + ), ), - "Unregister_Service_Performative": _reflection.GeneratedProtocolMessageType( + Unregister_Service_Performative=_reflection.GeneratedProtocolMessageType( "Unregister_Service_Performative", (_message.Message,), - { - "DESCRIPTOR": _OEFSEARCHMESSAGE_UNREGISTER_SERVICE_PERFORMATIVE, - "__module__": "oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.OefSearch.OefSearchMessage.Unregister_Service_Performative) - }, + dict( + DESCRIPTOR=_OEFSEARCHMESSAGE_UNREGISTER_SERVICE_PERFORMATIVE, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_Performative) + ), ), - "Search_Services_Performative": _reflection.GeneratedProtocolMessageType( + Search_Services_Performative=_reflection.GeneratedProtocolMessageType( "Search_Services_Performative", (_message.Message,), - { - "DESCRIPTOR": _OEFSEARCHMESSAGE_SEARCH_SERVICES_PERFORMATIVE, - "__module__": "oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.OefSearch.OefSearchMessage.Search_Services_Performative) - }, + dict( + DESCRIPTOR=_OEFSEARCHMESSAGE_SEARCH_SERVICES_PERFORMATIVE, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Services_Performative) + ), ), - "Search_Result_Performative": _reflection.GeneratedProtocolMessageType( + Search_Result_Performative=_reflection.GeneratedProtocolMessageType( "Search_Result_Performative", (_message.Message,), - { - "DESCRIPTOR": _OEFSEARCHMESSAGE_SEARCH_RESULT_PERFORMATIVE, - "__module__": "oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.OefSearch.OefSearchMessage.Search_Result_Performative) - }, + dict( + DESCRIPTOR=_OEFSEARCHMESSAGE_SEARCH_RESULT_PERFORMATIVE, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative) + ), ), - "Oef_Error_Performative": _reflection.GeneratedProtocolMessageType( + Oef_Error_Performative=_reflection.GeneratedProtocolMessageType( "Oef_Error_Performative", (_message.Message,), - { - "DESCRIPTOR": _OEFSEARCHMESSAGE_OEF_ERROR_PERFORMATIVE, - "__module__": "oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.OefSearch.OefSearchMessage.Oef_Error_Performative) - }, - ), - "DESCRIPTOR": _OEFSEARCHMESSAGE, - "__module__": "oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.OefSearch.OefSearchMessage) - }, + dict( + DESCRIPTOR=_OEFSEARCHMESSAGE_OEF_ERROR_PERFORMATIVE, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_Performative) + ), + ), + DESCRIPTOR=_OEFSEARCHMESSAGE, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage) + ), ) _sym_db.RegisterMessage(OefSearchMessage) _sym_db.RegisterMessage(OefSearchMessage.Description) diff --git a/packages/fetchai/protocols/oef_search/protocol.yaml b/packages/fetchai/protocols/oef_search/protocol.yaml index 9ec0a36b5b..2b59aa0524 100644 --- a/packages/fetchai/protocols/oef_search/protocol.yaml +++ b/packages/fetchai/protocols/oef_search/protocol.yaml @@ -11,9 +11,9 @@ fingerprint: custom_types.py: QmR4TS6KhXpRtGqq78B8mXMiiFXcFe7JEkxB7jHvqPVkgD dialogues.py: QmaEdkD3tQWtDUAohHig58E4Crst6WDUpi5EZeXozBGqVW message.py: QmQbBvRf8kswtsZS2D3jVeVeQ2wnbk5pa6VX5ousHU2BL2 - oef_search.proto: QmRg28H6bNo1PcyJiKLYjHe6FCwtE6nJ43DeJ4RFTcHm68 - oef_search_pb2.py: Qmd6S94v2GuZ2ffDupTa5ESBx4exF9dgoV8KcYtJVL6KhN - serialization.py: QmfXX9HJsQvNfeffGxPeUBw7cMznSjojDYe6TZ6jHpphQ4 + oef_search.proto: QmdwQyXRN4v26xnpehny7HaMnaKtf5GfDpWEka4s3D2Y7e + oef_search_pb2.py: QmYLWpKURppQihWhsVrWm88D6MGN4we928nfJpdU4SCpBg + serialization.py: QmXJGoS8dgdwde9FV53KDeWNSnLez9M1ftBksjfYXKFAAg fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/oef_search/serialization.py b/packages/fetchai/protocols/oef_search/serialization.py index d358edbbc1..cc766eb2c2 100644 --- a/packages/fetchai/protocols/oef_search/serialization.py +++ b/packages/fetchai/protocols/oef_search/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer @@ -43,12 +44,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(OefSearchMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() oef_search_msg = oef_search_pb2.OefSearchMessage() - oef_search_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - oef_search_msg.dialogue_starter_reference = dialogue_reference[0] - oef_search_msg.dialogue_responder_reference = dialogue_reference[1] - oef_search_msg.target = msg.target + 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 == OefSearchMessage.Performative.REGISTER_SERVICE: @@ -81,8 +85,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - oef_search_bytes = oef_search_msg.SerializeToString() - return oef_search_bytes + dialogue_message_pb.content = oef_search_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -92,15 +99,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'OefSearch' message. """ + message_pb = ProtobufMessage() oef_search_pb = oef_search_pb2.OefSearchMessage() - oef_search_pb.ParseFromString(obj) - message_id = oef_search_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - oef_search_pb.dialogue_starter_reference, - oef_search_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = oef_search_pb.target + target = message_pb.dialogue_message.target + oef_search_pb.ParseFromString(message_pb.dialogue_message.content) performative = oef_search_pb.WhichOneof("performative") performative_id = OefSearchMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/packages/fetchai/protocols/tac/protocol.yaml b/packages/fetchai/protocols/tac/protocol.yaml index d8f0dcaa5c..3bedb6f668 100644 --- a/packages/fetchai/protocols/tac/protocol.yaml +++ b/packages/fetchai/protocols/tac/protocol.yaml @@ -12,9 +12,9 @@ fingerprint: custom_types.py: QmXQATfnvuCpt4FicF4QcqCcLj9PQNsSHjCBvVQknWpyaN dialogues.py: QmTxHrcGujP1RUYvfJygZyQoUwmDg2GBWfmbR3tWUSbyop message.py: QmfNdmYk3wssDJvHwMsMxXaiWCjm3fSH9Su4KmsYDZJoWg - serialization.py: QmfZMesx1EFVYx1pj5SBn3eF7A2fz5a8cnBKzhBmVha31U - tac.proto: QmdpPZNhUW593qVNVoSTWZgd9R69bmBbw6Y9xjzYpvuDvV - tac_pb2.py: QmUwW3kixKwD2o1RRdq4NoNoihPb5BXKKRngWXztq32fea + serialization.py: QmZYhkHa6wW5T4fSUSHar67C76ascfKLsevWEfkff3uVvU + tac.proto: QmdPn2Z4xiPuc16PPzd8NNsbRd95aEDbvfUm1FFjvZZcuy + tac_pb2.py: QmYDEdWMwpfDawJPf8rjwLnEwDjdT4KuyNwYS8kEC5swKy fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/tac/serialization.py b/packages/fetchai/protocols/tac/serialization.py index d709b5cee0..ff88894e90 100644 --- a/packages/fetchai/protocols/tac/serialization.py +++ b/packages/fetchai/protocols/tac/serialization.py @@ -21,6 +21,7 @@ from typing import Any, Dict, cast +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.protocols.base import Message from aea.protocols.base import Serializer @@ -41,12 +42,15 @@ def encode(msg: Message) -> bytes: :return: the bytes. """ msg = cast(TacMessage, msg) + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() tac_msg = tac_pb2.TacMessage() - tac_msg.message_id = msg.message_id + + dialogue_message_pb.message_id = msg.message_id dialogue_reference = msg.dialogue_reference - tac_msg.dialogue_starter_reference = dialogue_reference[0] - tac_msg.dialogue_responder_reference = dialogue_reference[1] - tac_msg.target = msg.target + 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 == TacMessage.Performative.REGISTER: @@ -131,8 +135,11 @@ def encode(msg: Message) -> bytes: else: raise ValueError("Performative not valid: {}".format(performative_id)) - tac_bytes = tac_msg.SerializeToString() - return tac_bytes + dialogue_message_pb.content = tac_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + message_bytes = message_pb.SerializeToString() + return message_bytes @staticmethod def decode(obj: bytes) -> Message: @@ -142,15 +149,17 @@ def decode(obj: bytes) -> Message: :param obj: the bytes object. :return: the 'Tac' message. """ + message_pb = ProtobufMessage() tac_pb = tac_pb2.TacMessage() - tac_pb.ParseFromString(obj) - message_id = tac_pb.message_id + message_pb.ParseFromString(obj) + message_id = message_pb.dialogue_message.message_id dialogue_reference = ( - tac_pb.dialogue_starter_reference, - tac_pb.dialogue_responder_reference, + message_pb.dialogue_message.dialogue_starter_reference, + message_pb.dialogue_message.dialogue_responder_reference, ) - target = tac_pb.target + target = message_pb.dialogue_message.target + tac_pb.ParseFromString(message_pb.dialogue_message.content) performative = tac_pb.WhichOneof("performative") performative_id = TacMessage.Performative(str(performative)) performative_content = dict() # type: Dict[str, Any] diff --git a/packages/fetchai/protocols/tac/tac.proto b/packages/fetchai/protocols/tac/tac.proto index ce16512417..e35d12a7bd 100644 --- a/packages/fetchai/protocols/tac/tac.proto +++ b/packages/fetchai/protocols/tac/tac.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetch.aea.Tac; +package fetchai.aea.fetchai.tac; message TacMessage{ @@ -71,11 +71,6 @@ message TacMessage{ } - // Standard TacMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Cancelled_Performative cancelled = 5; Game_Data_Performative game_data = 6; diff --git a/packages/fetchai/protocols/tac/tac_pb2.py b/packages/fetchai/protocols/tac/tac_pb2.py index cedae73bc1..85a066c708 100644 --- a/packages/fetchai/protocols/tac/tac_pb2.py +++ b/packages/fetchai/protocols/tac/tac_pb2.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tac.proto +import sys + +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -14,16 +16,18 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="tac.proto", - package="fetch.aea.Tac", + package="fetchai.aea.fetchai.tac", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\ttac.proto\x12\rfetch.aea.Tac"\x8e\x1f\n\nTacMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x45\n\tcancelled\x18\x05 \x01(\x0b\x32\x30.fetch.aea.Tac.TacMessage.Cancelled_PerformativeH\x00\x12\x45\n\tgame_data\x18\x06 \x01(\x0b\x32\x30.fetch.aea.Tac.TacMessage.Game_Data_PerformativeH\x00\x12\x43\n\x08register\x18\x07 \x01(\x0b\x32/.fetch.aea.Tac.TacMessage.Register_PerformativeH\x00\x12\x45\n\ttac_error\x18\x08 \x01(\x0b\x32\x30.fetch.aea.Tac.TacMessage.Tac_Error_PerformativeH\x00\x12I\n\x0btransaction\x18\t \x01(\x0b\x32\x32.fetch.aea.Tac.TacMessage.Transaction_PerformativeH\x00\x12\x63\n\x18transaction_confirmation\x18\n \x01(\x0b\x32?.fetch.aea.Tac.TacMessage.Transaction_Confirmation_PerformativeH\x00\x12G\n\nunregister\x18\x0b \x01(\x0b\x32\x31.fetch.aea.Tac.TacMessage.Unregister_PerformativeH\x00\x1a\x80\x03\n\tErrorCode\x12\x45\n\nerror_code\x18\x01 \x01(\x0e\x32\x31.fetch.aea.Tac.TacMessage.ErrorCode.ErrorCodeEnum"\xab\x02\n\rErrorCodeEnum\x12\x11\n\rGENERIC_ERROR\x10\x00\x12\x15\n\x11REQUEST_NOT_VALID\x10\x01\x12!\n\x1d\x41GENT_ADDR_ALREADY_REGISTERED\x10\x02\x12!\n\x1d\x41GENT_NAME_ALREADY_REGISTERED\x10\x03\x12\x18\n\x14\x41GENT_NOT_REGISTERED\x10\x04\x12\x19\n\x15TRANSACTION_NOT_VALID\x10\x05\x12\x1c\n\x18TRANSACTION_NOT_MATCHING\x10\x06\x12\x1f\n\x1b\x41GENT_NAME_NOT_IN_WHITELIST\x10\x07\x12\x1b\n\x17\x43OMPETITION_NOT_RUNNING\x10\x08\x12\x19\n\x15\x44IALOGUE_INCONSISTENT\x10\t\x1a+\n\x15Register_Performative\x12\x12\n\nagent_name\x18\x01 \x01(\t\x1a\x19\n\x17Unregister_Performative\x1a\xad\x05\n\x18Transaction_Performative\x12\x16\n\x0etransaction_id\x18\x01 \x01(\t\x12\x11\n\tledger_id\x18\x02 \x01(\t\x12\x16\n\x0esender_address\x18\x03 \x01(\t\x12\x1c\n\x14\x63ounterparty_address\x18\x04 \x01(\t\x12i\n\x15\x61mount_by_currency_id\x18\x05 \x03(\x0b\x32J.fetch.aea.Tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry\x12\x63\n\x12\x66\x65\x65_by_currency_id\x18\x06 \x03(\x0b\x32G.fetch.aea.Tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry\x12i\n\x15quantities_by_good_id\x18\x07 \x03(\x0b\x32J.fetch.aea.Tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry\x12\r\n\x05nonce\x18\x08 \x01(\t\x12\x18\n\x10sender_signature\x18\t \x01(\t\x12\x1e\n\x16\x63ounterparty_signature\x18\n \x01(\t\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x36\n\x14\x46\x65\x65\x42yCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x18\n\x16\x43\x61ncelled_Performative\x1a\xd1\x0b\n\x16Game_Data_Performative\x12g\n\x15\x61mount_by_currency_id\x18\x01 \x03(\x0b\x32H.fetch.aea.Tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry\x12x\n\x1e\x65xchange_params_by_currency_id\x18\x02 \x03(\x0b\x32P.fetch.aea.Tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry\x12g\n\x15quantities_by_good_id\x18\x03 \x03(\x0b\x32H.fetch.aea.Tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry\x12n\n\x19utility_params_by_good_id\x18\x04 \x03(\x0b\x32K.fetch.aea.Tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry\x12\x61\n\x12\x66\x65\x65_by_currency_id\x18\x05 \x03(\x0b\x32\x45.fetch.aea.Tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry\x12\x61\n\x12\x61gent_addr_to_name\x18\x06 \x03(\x0b\x32\x45.fetch.aea.Tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry\x12\x63\n\x13\x63urrency_id_to_name\x18\x07 \x03(\x0b\x32\x46.fetch.aea.Tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry\x12[\n\x0fgood_id_to_name\x18\x08 \x03(\x0b\x32\x42.fetch.aea.Tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry\x12\x12\n\nversion_id\x18\t \x01(\t\x12H\n\x04info\x18\n \x03(\x0b\x32:.fetch.aea.Tac.TacMessage.Game_Data_Performative.InfoEntry\x12\x13\n\x0binfo_is_set\x18\x0b \x01(\x08\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x41\n\x1f\x45xchangeParamsByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a<\n\x1aUtilityParamsByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x36\n\x14\x46\x65\x65\x42yCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x36\n\x14\x41gentAddrToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x37\n\x15\x43urrencyIdToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x33\n\x11GoodIdToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xa5\x03\n%Transaction_Confirmation_Performative\x12\x16\n\x0etransaction_id\x18\x01 \x01(\t\x12v\n\x15\x61mount_by_currency_id\x18\x02 \x03(\x0b\x32W.fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry\x12v\n\x15quantities_by_good_id\x18\x03 \x03(\x0b\x32W.fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\xdd\x01\n\x16Tac_Error_Performative\x12\x37\n\nerror_code\x18\x01 \x01(\x0b\x32#.fetch.aea.Tac.TacMessage.ErrorCode\x12H\n\x04info\x18\x02 \x03(\x0b\x32:.fetch.aea.Tac.TacMessage.Tac_Error_Performative.InfoEntry\x12\x13\n\x0binfo_is_set\x18\x03 \x01(\x08\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=_b( + '\n\ttac.proto\x12\x17\x66\x65tchai.aea.fetchai.tac"\x93 \n\nTacMessage\x12O\n\tcancelled\x18\x05 \x01(\x0b\x32:.fetchai.aea.fetchai.tac.TacMessage.Cancelled_PerformativeH\x00\x12O\n\tgame_data\x18\x06 \x01(\x0b\x32:.fetchai.aea.fetchai.tac.TacMessage.Game_Data_PerformativeH\x00\x12M\n\x08register\x18\x07 \x01(\x0b\x32\x39.fetchai.aea.fetchai.tac.TacMessage.Register_PerformativeH\x00\x12O\n\ttac_error\x18\x08 \x01(\x0b\x32:.fetchai.aea.fetchai.tac.TacMessage.Tac_Error_PerformativeH\x00\x12S\n\x0btransaction\x18\t \x01(\x0b\x32<.fetchai.aea.fetchai.tac.TacMessage.Transaction_PerformativeH\x00\x12m\n\x18transaction_confirmation\x18\n \x01(\x0b\x32I.fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_PerformativeH\x00\x12Q\n\nunregister\x18\x0b \x01(\x0b\x32;.fetchai.aea.fetchai.tac.TacMessage.Unregister_PerformativeH\x00\x1a\x8a\x03\n\tErrorCode\x12O\n\nerror_code\x18\x01 \x01(\x0e\x32;.fetchai.aea.fetchai.tac.TacMessage.ErrorCode.ErrorCodeEnum"\xab\x02\n\rErrorCodeEnum\x12\x11\n\rGENERIC_ERROR\x10\x00\x12\x15\n\x11REQUEST_NOT_VALID\x10\x01\x12!\n\x1d\x41GENT_ADDR_ALREADY_REGISTERED\x10\x02\x12!\n\x1d\x41GENT_NAME_ALREADY_REGISTERED\x10\x03\x12\x18\n\x14\x41GENT_NOT_REGISTERED\x10\x04\x12\x19\n\x15TRANSACTION_NOT_VALID\x10\x05\x12\x1c\n\x18TRANSACTION_NOT_MATCHING\x10\x06\x12\x1f\n\x1b\x41GENT_NAME_NOT_IN_WHITELIST\x10\x07\x12\x1b\n\x17\x43OMPETITION_NOT_RUNNING\x10\x08\x12\x19\n\x15\x44IALOGUE_INCONSISTENT\x10\t\x1a+\n\x15Register_Performative\x12\x12\n\nagent_name\x18\x01 \x01(\t\x1a\x19\n\x17Unregister_Performative\x1a\xcb\x05\n\x18Transaction_Performative\x12\x16\n\x0etransaction_id\x18\x01 \x01(\t\x12\x11\n\tledger_id\x18\x02 \x01(\t\x12\x16\n\x0esender_address\x18\x03 \x01(\t\x12\x1c\n\x14\x63ounterparty_address\x18\x04 \x01(\t\x12s\n\x15\x61mount_by_currency_id\x18\x05 \x03(\x0b\x32T.fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry\x12m\n\x12\x66\x65\x65_by_currency_id\x18\x06 \x03(\x0b\x32Q.fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry\x12s\n\x15quantities_by_good_id\x18\x07 \x03(\x0b\x32T.fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry\x12\r\n\x05nonce\x18\x08 \x01(\t\x12\x18\n\x10sender_signature\x18\t \x01(\t\x12\x1e\n\x16\x63ounterparty_signature\x18\n \x01(\t\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x36\n\x14\x46\x65\x65\x42yCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x18\n\x16\x43\x61ncelled_Performative\x1a\xac\x0c\n\x16Game_Data_Performative\x12q\n\x15\x61mount_by_currency_id\x18\x01 \x03(\x0b\x32R.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry\x12\x82\x01\n\x1e\x65xchange_params_by_currency_id\x18\x02 \x03(\x0b\x32Z.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry\x12q\n\x15quantities_by_good_id\x18\x03 \x03(\x0b\x32R.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry\x12x\n\x19utility_params_by_good_id\x18\x04 \x03(\x0b\x32U.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry\x12k\n\x12\x66\x65\x65_by_currency_id\x18\x05 \x03(\x0b\x32O.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry\x12k\n\x12\x61gent_addr_to_name\x18\x06 \x03(\x0b\x32O.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry\x12m\n\x13\x63urrency_id_to_name\x18\x07 \x03(\x0b\x32P.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry\x12\x65\n\x0fgood_id_to_name\x18\x08 \x03(\x0b\x32L.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry\x12\x12\n\nversion_id\x18\t \x01(\t\x12R\n\x04info\x18\n \x03(\x0b\x32\x44.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry\x12\x13\n\x0binfo_is_set\x18\x0b \x01(\x08\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x41\n\x1f\x45xchangeParamsByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a<\n\x1aUtilityParamsByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x36\n\x14\x46\x65\x65\x42yCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x36\n\x14\x41gentAddrToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x37\n\x15\x43urrencyIdToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x33\n\x11GoodIdToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xbb\x03\n%Transaction_Confirmation_Performative\x12\x16\n\x0etransaction_id\x18\x01 \x01(\t\x12\x80\x01\n\x15\x61mount_by_currency_id\x18\x02 \x03(\x0b\x32\x61.fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry\x12\x80\x01\n\x15quantities_by_good_id\x18\x03 \x03(\x0b\x32\x61.fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\xf1\x01\n\x16Tac_Error_Performative\x12\x41\n\nerror_code\x18\x01 \x01(\x0b\x32-.fetchai.aea.fetchai.tac.TacMessage.ErrorCode\x12R\n\x04info\x18\x02 \x03(\x0b\x32\x44.fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry\x12\x13\n\x0binfo_is_set\x18\x03 \x01(\x08\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' + ), ) _TACMESSAGE_ERRORCODE_ERRORCODEENUM = _descriptor.EnumDescriptor( name="ErrorCodeEnum", - full_name="fetch.aea.Tac.TacMessage.ErrorCode.ErrorCodeEnum", + full_name="fetchai.aea.fetchai.tac.TacMessage.ErrorCode.ErrorCodeEnum", filename=None, file=DESCRIPTOR, values=[ @@ -96,22 +100,22 @@ ], containing_type=None, serialized_options=None, - serialized_start=770, - serialized_end=1069, + serialized_start=750, + serialized_end=1049, ) _sym_db.RegisterEnumDescriptor(_TACMESSAGE_ERRORCODE_ERRORCODEENUM) _TACMESSAGE_ERRORCODE = _descriptor.Descriptor( name="ErrorCode", - full_name="fetch.aea.Tac.TacMessage.ErrorCode", + full_name="fetchai.aea.fetchai.tac.TacMessage.ErrorCode", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetch.aea.Tac.TacMessage.ErrorCode.error_code", + full_name="fetchai.aea.fetchai.tac.TacMessage.ErrorCode.error_code", index=0, number=1, type=14, @@ -136,27 +140,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=685, - serialized_end=1069, + serialized_start=655, + serialized_end=1049, ) _TACMESSAGE_REGISTER_PERFORMATIVE = _descriptor.Descriptor( name="Register_Performative", - full_name="fetch.aea.Tac.TacMessage.Register_Performative", + full_name="fetchai.aea.fetchai.tac.TacMessage.Register_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="agent_name", - full_name="fetch.aea.Tac.TacMessage.Register_Performative.agent_name", + full_name="fetchai.aea.fetchai.tac.TacMessage.Register_Performative.agent_name", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -174,13 +178,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1071, - serialized_end=1114, + serialized_start=1051, + serialized_end=1094, ) _TACMESSAGE_UNREGISTER_PERFORMATIVE = _descriptor.Descriptor( name="Unregister_Performative", - full_name="fetch.aea.Tac.TacMessage.Unregister_Performative", + full_name="fetchai.aea.fetchai.tac.TacMessage.Unregister_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -193,27 +197,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1116, - serialized_end=1141, + serialized_start=1096, + serialized_end=1121, ) _TACMESSAGE_TRANSACTION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _descriptor.Descriptor( name="AmountByCurrencyIdEntry", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -224,7 +228,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -244,32 +248,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1657, - serialized_end=1714, + serialized_start=1667, + serialized_end=1724, ) _TACMESSAGE_TRANSACTION_PERFORMATIVE_FEEBYCURRENCYIDENTRY = _descriptor.Descriptor( name="FeeByCurrencyIdEntry", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -280,7 +284,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -300,32 +304,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1716, - serialized_end=1770, + serialized_start=1726, + serialized_end=1780, ) _TACMESSAGE_TRANSACTION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _descriptor.Descriptor( name="QuantitiesByGoodIdEntry", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -336,7 +340,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry.value", index=1, number=2, type=5, @@ -356,32 +360,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1772, - serialized_end=1829, + serialized_start=1782, + serialized_end=1839, ) _TACMESSAGE_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Transaction_Performative", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_id", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.transaction_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.transaction_id", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -392,14 +396,14 @@ ), _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.ledger_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.ledger_id", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -410,14 +414,14 @@ ), _descriptor.FieldDescriptor( name="sender_address", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.sender_address", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.sender_address", index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -428,14 +432,14 @@ ), _descriptor.FieldDescriptor( name="counterparty_address", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.counterparty_address", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.counterparty_address", index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -446,7 +450,7 @@ ), _descriptor.FieldDescriptor( name="amount_by_currency_id", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.amount_by_currency_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.amount_by_currency_id", index=4, number=5, type=11, @@ -464,7 +468,7 @@ ), _descriptor.FieldDescriptor( name="fee_by_currency_id", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.fee_by_currency_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.fee_by_currency_id", index=5, number=6, type=11, @@ -482,7 +486,7 @@ ), _descriptor.FieldDescriptor( name="quantities_by_good_id", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.quantities_by_good_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.quantities_by_good_id", index=6, number=7, type=11, @@ -500,14 +504,14 @@ ), _descriptor.FieldDescriptor( name="nonce", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.nonce", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.nonce", index=7, number=8, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -518,14 +522,14 @@ ), _descriptor.FieldDescriptor( name="sender_signature", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.sender_signature", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.sender_signature", index=8, number=9, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -536,14 +540,14 @@ ), _descriptor.FieldDescriptor( name="counterparty_signature", - full_name="fetch.aea.Tac.TacMessage.Transaction_Performative.counterparty_signature", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.counterparty_signature", index=9, number=10, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -565,13 +569,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1144, - serialized_end=1829, + serialized_start=1124, + serialized_end=1839, ) _TACMESSAGE_CANCELLED_PERFORMATIVE = _descriptor.Descriptor( name="Cancelled_Performative", - full_name="fetch.aea.Tac.TacMessage.Cancelled_Performative", + full_name="fetchai.aea.fetchai.tac.TacMessage.Cancelled_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -584,27 +588,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1831, - serialized_end=1855, + serialized_start=1841, + serialized_end=1865, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _descriptor.Descriptor( name="AmountByCurrencyIdEntry", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -615,7 +619,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -635,32 +639,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1657, - serialized_end=1714, + serialized_start=1667, + serialized_end=1724, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY = _descriptor.Descriptor( name="ExchangeParamsByCurrencyIdEntry", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -671,7 +675,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry.value", index=1, number=2, type=2, @@ -691,32 +695,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=2894, - serialized_end=2959, + serialized_start=2995, + serialized_end=3060, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _descriptor.Descriptor( name="QuantitiesByGoodIdEntry", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -727,7 +731,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry.value", index=1, number=2, type=5, @@ -747,32 +751,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1772, - serialized_end=1829, + serialized_start=1782, + serialized_end=1839, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY = _descriptor.Descriptor( name="UtilityParamsByGoodIdEntry", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -783,7 +787,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry.value", index=1, number=2, type=2, @@ -803,32 +807,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3020, - serialized_end=3080, + serialized_start=3121, + serialized_end=3181, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_FEEBYCURRENCYIDENTRY = _descriptor.Descriptor( name="FeeByCurrencyIdEntry", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -839,7 +843,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -859,32 +863,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1716, - serialized_end=1770, + serialized_start=1726, + serialized_end=1780, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_AGENTADDRTONAMEENTRY = _descriptor.Descriptor( name="AgentAddrToNameEntry", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -895,14 +899,14 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry.value", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -915,32 +919,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3138, - serialized_end=3192, + serialized_start=3239, + serialized_end=3293, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_CURRENCYIDTONAMEENTRY = _descriptor.Descriptor( name="CurrencyIdToNameEntry", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -951,14 +955,14 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry.value", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -971,32 +975,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3194, - serialized_end=3249, + serialized_start=3295, + serialized_end=3350, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_GOODIDTONAMEENTRY = _descriptor.Descriptor( name="GoodIdToNameEntry", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1007,14 +1011,14 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry.value", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1027,32 +1031,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3251, - serialized_end=3302, + serialized_start=3352, + serialized_end=3403, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_INFOENTRY = _descriptor.Descriptor( name="InfoEntry", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.InfoEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.InfoEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1063,14 +1067,14 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.InfoEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry.value", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1083,25 +1087,25 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3304, - serialized_end=3347, + serialized_start=3405, + serialized_end=3448, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE = _descriptor.Descriptor( name="Game_Data_Performative", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="amount_by_currency_id", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.amount_by_currency_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.amount_by_currency_id", index=0, number=1, type=11, @@ -1119,7 +1123,7 @@ ), _descriptor.FieldDescriptor( name="exchange_params_by_currency_id", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.exchange_params_by_currency_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.exchange_params_by_currency_id", index=1, number=2, type=11, @@ -1137,7 +1141,7 @@ ), _descriptor.FieldDescriptor( name="quantities_by_good_id", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.quantities_by_good_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.quantities_by_good_id", index=2, number=3, type=11, @@ -1155,7 +1159,7 @@ ), _descriptor.FieldDescriptor( name="utility_params_by_good_id", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.utility_params_by_good_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.utility_params_by_good_id", index=3, number=4, type=11, @@ -1173,7 +1177,7 @@ ), _descriptor.FieldDescriptor( name="fee_by_currency_id", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.fee_by_currency_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.fee_by_currency_id", index=4, number=5, type=11, @@ -1191,7 +1195,7 @@ ), _descriptor.FieldDescriptor( name="agent_addr_to_name", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.agent_addr_to_name", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.agent_addr_to_name", index=5, number=6, type=11, @@ -1209,7 +1213,7 @@ ), _descriptor.FieldDescriptor( name="currency_id_to_name", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.currency_id_to_name", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.currency_id_to_name", index=6, number=7, type=11, @@ -1227,7 +1231,7 @@ ), _descriptor.FieldDescriptor( name="good_id_to_name", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.good_id_to_name", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.good_id_to_name", index=7, number=8, type=11, @@ -1245,14 +1249,14 @@ ), _descriptor.FieldDescriptor( name="version_id", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.version_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.version_id", index=8, number=9, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1263,7 +1267,7 @@ ), _descriptor.FieldDescriptor( name="info", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.info", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.info", index=9, number=10, type=11, @@ -1281,7 +1285,7 @@ ), _descriptor.FieldDescriptor( name="info_is_set", - full_name="fetch.aea.Tac.TacMessage.Game_Data_Performative.info_is_set", + full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.info_is_set", index=10, number=11, type=8, @@ -1316,27 +1320,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1858, - serialized_end=3347, + serialized_start=1868, + serialized_end=3448, ) _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _descriptor.Descriptor( name="AmountByCurrencyIdEntry", - full_name="fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1347,7 +1351,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -1367,32 +1371,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1657, - serialized_end=1714, + serialized_start=1667, + serialized_end=1724, ) _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _descriptor.Descriptor( name="QuantitiesByGoodIdEntry", - full_name="fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1403,7 +1407,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry.value", index=1, number=2, type=5, @@ -1423,32 +1427,32 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1772, - serialized_end=1829, + serialized_start=1782, + serialized_end=1839, ) _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE = _descriptor.Descriptor( name="Transaction_Confirmation_Performative", - full_name="fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_id", - full_name="fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.transaction_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.transaction_id", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1459,7 +1463,7 @@ ), _descriptor.FieldDescriptor( name="amount_by_currency_id", - full_name="fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.amount_by_currency_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.amount_by_currency_id", index=1, number=2, type=11, @@ -1477,7 +1481,7 @@ ), _descriptor.FieldDescriptor( name="quantities_by_good_id", - full_name="fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.quantities_by_good_id", + full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.quantities_by_good_id", index=2, number=3, type=11, @@ -1505,27 +1509,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3350, - serialized_end=3771, + serialized_start=3451, + serialized_end=3894, ) _TACMESSAGE_TAC_ERROR_PERFORMATIVE_INFOENTRY = _descriptor.Descriptor( name="InfoEntry", - full_name="fetch.aea.Tac.TacMessage.Tac_Error_Performative.InfoEntry", + full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetch.aea.Tac.TacMessage.Tac_Error_Performative.InfoEntry.key", + full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry.key", index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1536,14 +1540,14 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetch.aea.Tac.TacMessage.Tac_Error_Performative.InfoEntry.value", + full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry.value", index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, - default_value=b"".decode("utf-8"), + default_value=_b("").decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -1556,25 +1560,25 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=b"8\001", + serialized_options=_b("8\001"), is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3304, - serialized_end=3347, + serialized_start=3405, + serialized_end=3448, ) _TACMESSAGE_TAC_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Tac_Error_Performative", - full_name="fetch.aea.Tac.TacMessage.Tac_Error_Performative", + full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetch.aea.Tac.TacMessage.Tac_Error_Performative.error_code", + full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.error_code", index=0, number=1, type=11, @@ -1592,7 +1596,7 @@ ), _descriptor.FieldDescriptor( name="info", - full_name="fetch.aea.Tac.TacMessage.Tac_Error_Performative.info", + full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.info", index=1, number=2, type=11, @@ -1610,7 +1614,7 @@ ), _descriptor.FieldDescriptor( name="info_is_set", - full_name="fetch.aea.Tac.TacMessage.Tac_Error_Performative.info_is_set", + full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.info_is_set", index=2, number=3, type=8, @@ -1635,93 +1639,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3774, - serialized_end=3995, + serialized_start=3897, + serialized_end=4138, ) _TACMESSAGE = _descriptor.Descriptor( name="TacMessage", - full_name="fetch.aea.Tac.TacMessage", + full_name="fetchai.aea.fetchai.tac.TacMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ - _descriptor.FieldDescriptor( - name="message_id", - full_name="fetch.aea.Tac.TacMessage.message_id", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_starter_reference", - full_name="fetch.aea.Tac.TacMessage.dialogue_starter_reference", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="dialogue_responder_reference", - full_name="fetch.aea.Tac.TacMessage.dialogue_responder_reference", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), - _descriptor.FieldDescriptor( - name="target", - full_name="fetch.aea.Tac.TacMessage.target", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - ), _descriptor.FieldDescriptor( name="cancelled", - full_name="fetch.aea.Tac.TacMessage.cancelled", - index=4, + full_name="fetchai.aea.fetchai.tac.TacMessage.cancelled", + index=0, number=5, type=11, cpp_type=10, @@ -1738,8 +1670,8 @@ ), _descriptor.FieldDescriptor( name="game_data", - full_name="fetch.aea.Tac.TacMessage.game_data", - index=5, + full_name="fetchai.aea.fetchai.tac.TacMessage.game_data", + index=1, number=6, type=11, cpp_type=10, @@ -1756,8 +1688,8 @@ ), _descriptor.FieldDescriptor( name="register", - full_name="fetch.aea.Tac.TacMessage.register", - index=6, + full_name="fetchai.aea.fetchai.tac.TacMessage.register", + index=2, number=7, type=11, cpp_type=10, @@ -1774,8 +1706,8 @@ ), _descriptor.FieldDescriptor( name="tac_error", - full_name="fetch.aea.Tac.TacMessage.tac_error", - index=7, + full_name="fetchai.aea.fetchai.tac.TacMessage.tac_error", + index=3, number=8, type=11, cpp_type=10, @@ -1792,8 +1724,8 @@ ), _descriptor.FieldDescriptor( name="transaction", - full_name="fetch.aea.Tac.TacMessage.transaction", - index=8, + full_name="fetchai.aea.fetchai.tac.TacMessage.transaction", + index=4, number=9, type=11, cpp_type=10, @@ -1810,8 +1742,8 @@ ), _descriptor.FieldDescriptor( name="transaction_confirmation", - full_name="fetch.aea.Tac.TacMessage.transaction_confirmation", - index=9, + full_name="fetchai.aea.fetchai.tac.TacMessage.transaction_confirmation", + index=5, number=10, type=11, cpp_type=10, @@ -1828,8 +1760,8 @@ ), _descriptor.FieldDescriptor( name="unregister", - full_name="fetch.aea.Tac.TacMessage.unregister", - index=10, + full_name="fetchai.aea.fetchai.tac.TacMessage.unregister", + index=6, number=11, type=11, cpp_type=10, @@ -1864,14 +1796,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetch.aea.Tac.TacMessage.performative", + full_name="fetchai.aea.fetchai.tac.TacMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=29, - serialized_end=4011, + serialized_start=39, + serialized_end=4154, ) _TACMESSAGE_ERRORCODE.fields_by_name[ @@ -2050,218 +1982,218 @@ TacMessage = _reflection.GeneratedProtocolMessageType( "TacMessage", (_message.Message,), - { - "ErrorCode": _reflection.GeneratedProtocolMessageType( + dict( + ErrorCode=_reflection.GeneratedProtocolMessageType( "ErrorCode", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_ERRORCODE, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.ErrorCode) - }, + dict( + DESCRIPTOR=_TACMESSAGE_ERRORCODE, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.ErrorCode) + ), ), - "Register_Performative": _reflection.GeneratedProtocolMessageType( + Register_Performative=_reflection.GeneratedProtocolMessageType( "Register_Performative", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_REGISTER_PERFORMATIVE, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Register_Performative) - }, + dict( + DESCRIPTOR=_TACMESSAGE_REGISTER_PERFORMATIVE, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Register_Performative) + ), ), - "Unregister_Performative": _reflection.GeneratedProtocolMessageType( + Unregister_Performative=_reflection.GeneratedProtocolMessageType( "Unregister_Performative", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_UNREGISTER_PERFORMATIVE, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Unregister_Performative) - }, + dict( + DESCRIPTOR=_TACMESSAGE_UNREGISTER_PERFORMATIVE, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Unregister_Performative) + ), ), - "Transaction_Performative": _reflection.GeneratedProtocolMessageType( + Transaction_Performative=_reflection.GeneratedProtocolMessageType( "Transaction_Performative", (_message.Message,), - { - "AmountByCurrencyIdEntry": _reflection.GeneratedProtocolMessageType( + dict( + AmountByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( "AmountByCurrencyIdEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_TRANSACTION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_TRANSACTION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry) + ), ), - "FeeByCurrencyIdEntry": _reflection.GeneratedProtocolMessageType( + FeeByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( "FeeByCurrencyIdEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_TRANSACTION_PERFORMATIVE_FEEBYCURRENCYIDENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_TRANSACTION_PERFORMATIVE_FEEBYCURRENCYIDENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry) + ), ), - "QuantitiesByGoodIdEntry": _reflection.GeneratedProtocolMessageType( + QuantitiesByGoodIdEntry=_reflection.GeneratedProtocolMessageType( "QuantitiesByGoodIdEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_TRANSACTION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_TRANSACTION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry) + ), ), - "DESCRIPTOR": _TACMESSAGE_TRANSACTION_PERFORMATIVE, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Transaction_Performative) - }, + DESCRIPTOR=_TACMESSAGE_TRANSACTION_PERFORMATIVE, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative) + ), ), - "Cancelled_Performative": _reflection.GeneratedProtocolMessageType( + Cancelled_Performative=_reflection.GeneratedProtocolMessageType( "Cancelled_Performative", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_CANCELLED_PERFORMATIVE, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Cancelled_Performative) - }, + dict( + DESCRIPTOR=_TACMESSAGE_CANCELLED_PERFORMATIVE, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Cancelled_Performative) + ), ), - "Game_Data_Performative": _reflection.GeneratedProtocolMessageType( + Game_Data_Performative=_reflection.GeneratedProtocolMessageType( "Game_Data_Performative", (_message.Message,), - { - "AmountByCurrencyIdEntry": _reflection.GeneratedProtocolMessageType( + dict( + AmountByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( "AmountByCurrencyIdEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_GAME_DATA_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry) + ), ), - "ExchangeParamsByCurrencyIdEntry": _reflection.GeneratedProtocolMessageType( + ExchangeParamsByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( "ExchangeParamsByCurrencyIdEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_GAME_DATA_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry) + ), ), - "QuantitiesByGoodIdEntry": _reflection.GeneratedProtocolMessageType( + QuantitiesByGoodIdEntry=_reflection.GeneratedProtocolMessageType( "QuantitiesByGoodIdEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_GAME_DATA_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry) + ), ), - "UtilityParamsByGoodIdEntry": _reflection.GeneratedProtocolMessageType( + UtilityParamsByGoodIdEntry=_reflection.GeneratedProtocolMessageType( "UtilityParamsByGoodIdEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_GAME_DATA_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry) + ), ), - "FeeByCurrencyIdEntry": _reflection.GeneratedProtocolMessageType( + FeeByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( "FeeByCurrencyIdEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_GAME_DATA_PERFORMATIVE_FEEBYCURRENCYIDENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_FEEBYCURRENCYIDENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry) + ), ), - "AgentAddrToNameEntry": _reflection.GeneratedProtocolMessageType( + AgentAddrToNameEntry=_reflection.GeneratedProtocolMessageType( "AgentAddrToNameEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_GAME_DATA_PERFORMATIVE_AGENTADDRTONAMEENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_AGENTADDRTONAMEENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry) + ), ), - "CurrencyIdToNameEntry": _reflection.GeneratedProtocolMessageType( + CurrencyIdToNameEntry=_reflection.GeneratedProtocolMessageType( "CurrencyIdToNameEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_GAME_DATA_PERFORMATIVE_CURRENCYIDTONAMEENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_CURRENCYIDTONAMEENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry) + ), ), - "GoodIdToNameEntry": _reflection.GeneratedProtocolMessageType( + GoodIdToNameEntry=_reflection.GeneratedProtocolMessageType( "GoodIdToNameEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_GAME_DATA_PERFORMATIVE_GOODIDTONAMEENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_GOODIDTONAMEENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry) + ), ), - "InfoEntry": _reflection.GeneratedProtocolMessageType( + InfoEntry=_reflection.GeneratedProtocolMessageType( "InfoEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_GAME_DATA_PERFORMATIVE_INFOENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Game_Data_Performative.InfoEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_INFOENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry) + ), ), - "DESCRIPTOR": _TACMESSAGE_GAME_DATA_PERFORMATIVE, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Game_Data_Performative) - }, + DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative) + ), ), - "Transaction_Confirmation_Performative": _reflection.GeneratedProtocolMessageType( + Transaction_Confirmation_Performative=_reflection.GeneratedProtocolMessageType( "Transaction_Confirmation_Performative", (_message.Message,), - { - "AmountByCurrencyIdEntry": _reflection.GeneratedProtocolMessageType( + dict( + AmountByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( "AmountByCurrencyIdEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry) + ), ), - "QuantitiesByGoodIdEntry": _reflection.GeneratedProtocolMessageType( + QuantitiesByGoodIdEntry=_reflection.GeneratedProtocolMessageType( "QuantitiesByGoodIdEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry) + ), ), - "DESCRIPTOR": _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Transaction_Confirmation_Performative) - }, + DESCRIPTOR=_TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative) + ), ), - "Tac_Error_Performative": _reflection.GeneratedProtocolMessageType( + Tac_Error_Performative=_reflection.GeneratedProtocolMessageType( "Tac_Error_Performative", (_message.Message,), - { - "InfoEntry": _reflection.GeneratedProtocolMessageType( + dict( + InfoEntry=_reflection.GeneratedProtocolMessageType( "InfoEntry", (_message.Message,), - { - "DESCRIPTOR": _TACMESSAGE_TAC_ERROR_PERFORMATIVE_INFOENTRY, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Tac_Error_Performative.InfoEntry) - }, + dict( + DESCRIPTOR=_TACMESSAGE_TAC_ERROR_PERFORMATIVE_INFOENTRY, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry) + ), ), - "DESCRIPTOR": _TACMESSAGE_TAC_ERROR_PERFORMATIVE, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage.Tac_Error_Performative) - }, - ), - "DESCRIPTOR": _TACMESSAGE, - "__module__": "tac_pb2" - # @@protoc_insertion_point(class_scope:fetch.aea.Tac.TacMessage) - }, + DESCRIPTOR=_TACMESSAGE_TAC_ERROR_PERFORMATIVE, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative) + ), + ), + DESCRIPTOR=_TACMESSAGE, + __module__="tac_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage) + ), ) _sym_db.RegisterMessage(TacMessage) _sym_db.RegisterMessage(TacMessage.ErrorCode) diff --git a/packages/hashes.csv b/packages/hashes.csv index 26c68c8807..42fdd85190 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -34,18 +34,18 @@ fetchai/connections/tcp,QmU93B7yajCHwXsgDXXhv1uSuXi7VmFBhdahcFosbrr6nA fetchai/connections/webhook,QmaJunWQT1ypkqGnzrj5gYjjQBywjTHJmyktCZXZsa8hv8 fetchai/contracts/erc1155,QmTSpeW7JJZaBFwyHUbycPg87nUGW3CkkGchFxn6NtshpQ fetchai/contracts/scaffold,QmTKkXifQKq5sTVdVKeD9UGnDwdJoEAoJDjY6qUPt9Bsv2 -fetchai/protocols/contract_api,QmZoZuWTH86J6uAgcafGpdeHuyf5kYxNH5wWucq4QcQ3dm -fetchai/protocols/default,Qmd53haXNHSBqz6GquzFMFwWLfgg3rDZSGyNtiwrT8mwPg -fetchai/protocols/fipa,Qmb3GXxbEQ23sZ1d7HsmrvchLwPfsEcDAbpLLjRTYxdJDm -fetchai/protocols/gym,QmVLULhH4gn8suFe8Z31X5mVYp3fFSGays5MHDNzKnGA4k -fetchai/protocols/http,QmZJVqY2cxjky6p3o76TUemSsFDws8Dx33voG9WMdrKcry -fetchai/protocols/ledger_api,Qmak3uKpeSfT5f4oqes3oUcNSg7vy7WKE2tUmSu8CZUNJ5 -fetchai/protocols/ml_trade,QmNVZvbcgERSypYUopKMHvd6F8B81rQqtLVqUvzMeEEwJN -fetchai/protocols/oef_search,QmP3Ypcqz6JZzdVRpZ4SnHHpWmPjfYgrt2xW9YEbiFc8XE +fetchai/protocols/contract_api,QmXEK5bYeQNgxTLQKXiVS8bW5PCXRmzLYoEfmRvamu5ntw +fetchai/protocols/default,QmdacRqMbT8yL47UWgFi4D1T3hat7kA4mYwcAZod4rdckL +fetchai/protocols/fipa,QmYLaQWzgPFCWNnzbAYfX9GyqMgvgv3r1BpofhnZjbt9hP +fetchai/protocols/gym,QmQ5dPRpfbVJgqmdr1dCRrt7cjSqFWe3mmehY1KpQ24Jng +fetchai/protocols/http,QmSTPtXUYGhs5m61DJpbB5Gs9jjSp479BPoCaM77nzpVN2 +fetchai/protocols/ledger_api,QmfJYfDbK8a8RePE6aR7sxjwSUPrCtXAAxonxsKmsX6xbe +fetchai/protocols/ml_trade,QmbWkEMnyQAFgz3UnE7Uq7drBYCGm218NHfGPXPgmbF8mc +fetchai/protocols/oef_search,QmPTm85UzVxubnq5dQgrU5hANDqt6rN8U15MRwZVv9CscU fetchai/protocols/scaffold,QmZhHsoA7JzNSoSUABFWqyRELaei4BtKYce1QKVcHhnQJN -fetchai/protocols/signing,QmPhHfj2N2iCRTMEDYiifC3AkytZRFpVMoH7g63NwGcKwH -fetchai/protocols/state_update,QmQmQt1VHwxmnNmwxKcrF4Qno6iHzVhhnUUjsqPtpfpQUV -fetchai/protocols/tac,QmSn9DVVZUroa5dsjqMwiVBFmpLjyGuox8nt2FhhTs2KM6 +fetchai/protocols/signing,QmUepyAA8tn5CsGjg1aCLRjbi611KYpPKLnNJbEdntdZyM +fetchai/protocols/state_update,QmdpQnN23UNKSvt6gtkFrV4qsnRbKuNNBFAKAGuzharTAj +fetchai/protocols/tac,Qmb3kxpiSyCVzq1m7yGzQp2mScc6tfzcoaEQiaWaMFg562 fetchai/skills/aries_alice,Qmf7EveCvnh8fCoTYpFNKqVHYtZMg7bCdNBpeqzWxzY1GU fetchai/skills/aries_faber,Qmf5AcH8TYVZcBUWoP9oaMnAyzWzGPHyhBXczn9vWX83eG fetchai/skills/carpark_client,QmdLH7Gg2bxjAqWWSnaykJvsXbdyPkZhTuskNuRdtCD8LV From 0705e4f9519acd3243342954cced934389a21d4d Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 14 Sep 2020 12:57:00 +0200 Subject: [PATCH 018/155] update fipa serialization test --- .../test_oef/test_communication.py | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/tests/test_packages/test_connections/test_oef/test_communication.py b/tests/test_packages/test_connections/test_oef/test_communication.py index de6c5f5a53..f4f48b339f 100644 --- a/tests/test_packages/test_connections/test_oef/test_communication.py +++ b/tests/test_packages/test_connections/test_oef/test_communication.py @@ -25,7 +25,7 @@ import sys import time import unittest -from typing import Dict, cast +from typing import cast from unittest import mock from unittest.mock import patch @@ -47,6 +47,7 @@ Query, ) from aea.mail.base import Envelope +from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage from aea.multiplexer import Multiplexer from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage @@ -722,6 +723,30 @@ def test_inform(self): def test_serialisation_fipa(self): """Tests a Value Error flag for wrong CFP query.""" + + def _encode_fipa_cfp(msg: FipaMessage) -> bytes: + """Helper function to serialize FIPA CFP message.""" + message_pb = ProtobufMessage() + dialogue_message_pb = DialogueMessage() + fipa_msg = fipa_pb2.FipaMessage() + + 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 = fipa_pb2.FipaMessage.Cfp_Performative() # type: ignore + # the following are commented to make the decoding to fail. + # query = msg.query # noqa: E800 + # Query.encode(performative.query, query) # noqa: E800 + fipa_msg.cfp.CopyFrom(performative) + dialogue_message_pb.content = fipa_msg.SerializeToString() + + message_pb.dialogue_message.CopyFrom(dialogue_message_pb) + fipa_bytes = message_pb.SerializeToString() + return fipa_bytes + with pytest.raises(ValueError): msg = FipaMessage( performative=FipaMessage.Performative.CFP, @@ -744,15 +769,7 @@ def test_serialisation_fipa(self): query=Query([Constraint("something", ConstraintType(">", 1))]), ) cfp_msg.set("query", "hello") - fipa_msg = fipa_pb2.FipaMessage() - fipa_msg.message_id = cfp_msg.message_id - dialogue_reference = cast(Dict[str, str], cfp_msg.dialogue_reference) - fipa_msg.dialogue_starter_reference = dialogue_reference[0] - fipa_msg.dialogue_responder_reference = dialogue_reference[1] - fipa_msg.target = cfp_msg.target - performative = fipa_pb2.FipaMessage.Cfp_Performative() - fipa_msg.cfp.CopyFrom(performative) - fipa_bytes = fipa_msg.SerializeToString() + fipa_bytes = _encode_fipa_cfp(cfp_msg) # The encoded message is not a valid FIPA message. FipaMessage.serializer.decode(fipa_bytes) @@ -768,16 +785,7 @@ def test_serialisation_fipa(self): FipaMessage, "Performative" ) as mock_performative_enum: mock_performative_enum.CFP.value = "unknown" - fipa_msg = fipa_pb2.FipaMessage() - fipa_msg.message_id = cfp_msg.message_id - dialogue_reference = cast(Dict[str, str], cfp_msg.dialogue_reference) - fipa_msg.dialogue_starter_reference = dialogue_reference[0] - fipa_msg.dialogue_responder_reference = dialogue_reference[1] - fipa_msg.target = cfp_msg.target - performative = fipa_pb2.FipaMessage.Cfp_Performative() - fipa_msg.cfp.CopyFrom(performative) - fipa_bytes = fipa_msg.SerializeToString() - + fipa_bytes = _encode_fipa_cfp(cfp_msg) # The encoded message is not a FIPA message FipaMessage.serializer.decode(fipa_bytes) From ea00687e4c080323ea90dc8251474b0e7bc5328d Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 14 Sep 2020 14:21:23 +0200 Subject: [PATCH 019/155] update fingerprints --- packages/fetchai/protocols/oef_search/protocol.yaml | 10 +++++----- packages/hashes.csv | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/fetchai/protocols/oef_search/protocol.yaml b/packages/fetchai/protocols/oef_search/protocol.yaml index c82611c901..e17d136632 100644 --- a/packages/fetchai/protocols/oef_search/protocol.yaml +++ b/packages/fetchai/protocols/oef_search/protocol.yaml @@ -8,12 +8,12 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmfGEYrF54F6i5RTGgLgzfhMCMgYBY8Q1iHwb9UhE96MDi __init__.py: QmRvTtynKcd7shmzgf8aZdcA5witjNL5cL2a7WPgscp7wq - custom_types.py: QmR4TS6KhXpRtGqq78B8mXMiiFXcFe7JEkxB7jHvqPVkgD - dialogues.py: QmaEdkD3tQWtDUAohHig58E4Crst6WDUpi5EZeXozBGqVW - message.py: QmQbBvRf8kswtsZS2D3jVeVeQ2wnbk5pa6VX5ousHU2BL2 - oef_search.proto: QmdwQyXRN4v26xnpehny7HaMnaKtf5GfDpWEka4s3D2Y7e + custom_types.py: QmPhg3DBpLYzjEuzjC9w9rZQnNwcmXG3k5ACmtdgmiUgwu + dialogues.py: QmQPLnW3jAs6tLLmhkX4C7texGRHM9bfdjs83dUH5TkJ4v + message.py: QmXj8MgvPtJKXZyhTnTfpXEZoAz4Z1u6wbMwMkKCRgvujL + oef_search.proto: QmSq22zt3zpiLyTTDzPo71QCCFebxpHgSKK1PWfo2cMNyh oef_search_pb2.py: QmYLWpKURppQihWhsVrWm88D6MGN4we928nfJpdU4SCpBg - serialization.py: QmXJGoS8dgdwde9FV53KDeWNSnLez9M1ftBksjfYXKFAAg + serialization.py: QmSZA26BK7zdb7rJ6Fkca2dVBjUaegM7vCrTtpGshssFPj fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/hashes.csv b/packages/hashes.csv index 11883c9c59..cec1686f50 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -41,15 +41,15 @@ fetchai/protocols/gym,QmQ5dPRpfbVJgqmdr1dCRrt7cjSqFWe3mmehY1KpQ24Jng fetchai/protocols/http,QmSTPtXUYGhs5m61DJpbB5Gs9jjSp479BPoCaM77nzpVN2 fetchai/protocols/ledger_api,QmfJYfDbK8a8RePE6aR7sxjwSUPrCtXAAxonxsKmsX6xbe fetchai/protocols/ml_trade,QmbWkEMnyQAFgz3UnE7Uq7drBYCGm218NHfGPXPgmbF8mc -fetchai/protocols/oef_search,QmPTm85UzVxubnq5dQgrU5hANDqt6rN8U15MRwZVv9CscU +fetchai/protocols/oef_search,QmNV5EtgUnNoouMH14eC8axntvtk5g3ZXnQJiweLEb3C8L fetchai/protocols/scaffold,QmZhHsoA7JzNSoSUABFWqyRELaei4BtKYce1QKVcHhnQJN fetchai/protocols/signing,QmUepyAA8tn5CsGjg1aCLRjbi611KYpPKLnNJbEdntdZyM fetchai/protocols/state_update,QmdpQnN23UNKSvt6gtkFrV4qsnRbKuNNBFAKAGuzharTAj fetchai/protocols/tac,Qmb3kxpiSyCVzq1m7yGzQp2mScc6tfzcoaEQiaWaMFg562 -fetchai/skills/aries_alice,Qmf7EveCvnh8fCoTYpFNKqVHYtZMg7bCdNBpeqzWxzY1GU -fetchai/skills/aries_faber,Qmf5AcH8TYVZcBUWoP9oaMnAyzWzGPHyhBXczn9vWX83eG -fetchai/skills/carpark_client,QmdLH7Gg2bxjAqWWSnaykJvsXbdyPkZhTuskNuRdtCD8LV -fetchai/skills/carpark_detection,QmNgE6hemHu3w8J6U93XhoJwXkuuHgVtHvVnavz1YM7d7X +fetchai/skills/aries_alice,QmceH6zkDzd9HGQWHgo23CoWNC76ciUhSXLeoBbaAL7nVr +fetchai/skills/aries_faber,QmaWkUa6PHnYMxqxN1FDmP8KYhwt6TUdAVNjHxBVGp2fw1 +fetchai/skills/carpark_client,QmcgCzxhNVY1H8o1wBn1Yon62d7CinF8Pzq4toZxkNuW9r +fetchai/skills/carpark_detection,Qmez1pgvtyKHtJxgcE4WHH67KJjPvFrPkmWnEhUe2KPXn9 fetchai/skills/echo,QmSGbrAp6MY9u5eohFbjZAwKmNx3zbEPd2u3QYFFTVPqNk fetchai/skills/erc1155_client,QmdMnSss7RU9jetwaJkfjgKvpaJ4cHKUY7e5ScU6676dd5 fetchai/skills/erc1155_deploy,QmZDCUh7SAYaCvo5FHHa1SLb7ZYvZUL2K7xPoGuXdoca1J From 2d94eaad41e8107070fbd6f4b47986e651b7f166 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 14 Sep 2020 14:26:08 +0200 Subject: [PATCH 020/155] update oef_search protocol --- .../protocols/oef_search/oef_search_pb2.py | 177 +++++++++++++++--- .../protocols/oef_search/protocol.yaml | 2 +- packages/hashes.csv | 2 +- 3 files changed, 155 insertions(+), 26 deletions(-) diff --git a/packages/fetchai/protocols/oef_search/oef_search_pb2.py b/packages/fetchai/protocols/oef_search/oef_search_pb2.py index 5e425840d1..a00c221d78 100644 --- a/packages/fetchai/protocols/oef_search/oef_search_pb2.py +++ b/packages/fetchai/protocols/oef_search/oef_search_pb2.py @@ -20,7 +20,7 @@ syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\x10oef_search.proto\x12\x1e\x66\x65tchai.aea.fetchai.oef_search"\xd2\x0b\n\x10OefSearchMessage\x12\\\n\toef_error\x18\x05 \x01(\x0b\x32G.fetchai.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_PerformativeH\x00\x12j\n\x10register_service\x18\x06 \x01(\x0b\x32N.fetchai.aea.fetchai.oef_search.OefSearchMessage.Register_Service_PerformativeH\x00\x12\x64\n\rsearch_result\x18\x07 \x01(\x0b\x32K.fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_PerformativeH\x00\x12h\n\x0fsearch_services\x18\x08 \x01(\x0b\x32M.fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Services_PerformativeH\x00\x12n\n\x12unregister_service\x18\t \x01(\x0b\x32P.fetchai.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\xdc\x01\n\x11OefErrorOperation\x12\x62\n\toef_error\x18\x01 \x01(\x0e\x32O.fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.OefErrorEnum"c\n\x0cOefErrorEnum\x12\x14\n\x10REGISTER_SERVICE\x10\x00\x12\x16\n\x12UNREGISTER_SERVICE\x10\x01\x12\x13\n\x0fSEARCH_SERVICES\x10\x02\x12\x10\n\x0cSEND_MESSAGE\x10\x03\x1a\x96\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12Q\n\x07nothing\x18\x02 \x01(\x0b\x32>.fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1az\n\x1dRegister_Service_Performative\x12Y\n\x13service_description\x18\x01 \x01(\x0b\x32<.fetchai.aea.fetchai.oef_search.OefSearchMessage.Description\x1a|\n\x1fUnregister_Service_Performative\x12Y\n\x13service_description\x18\x01 \x01(\x0b\x32<.fetchai.aea.fetchai.oef_search.OefSearchMessage.Description\x1a\x65\n\x1cSearch_Services_Performative\x12\x45\n\x05query\x18\x01 \x01(\x0b\x32\x36.fetchai.aea.fetchai.oef_search.OefSearchMessage.Query\x1a,\n\x1aSearch_Result_Performative\x12\x0e\n\x06\x61gents\x18\x01 \x03(\t\x1ay\n\x16Oef_Error_Performative\x12_\n\x13oef_error_operation\x18\x01 \x01(\x0b\x32\x42.fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperationB\x0e\n\x0cperformativeb\x06proto3' + '\n\x10oef_search.proto\x12\x1e\x66\x65tchai.aea.fetchai.oef_search"\xb9\r\n\x10OefSearchMessage\x12\\\n\toef_error\x18\x05 \x01(\x0b\x32G.fetchai.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_PerformativeH\x00\x12j\n\x10register_service\x18\x06 \x01(\x0b\x32N.fetchai.aea.fetchai.oef_search.OefSearchMessage.Register_Service_PerformativeH\x00\x12\x64\n\rsearch_result\x18\x07 \x01(\x0b\x32K.fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_PerformativeH\x00\x12h\n\x0fsearch_services\x18\x08 \x01(\x0b\x32M.fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Services_PerformativeH\x00\x12X\n\x07success\x18\t \x01(\x0b\x32\x45.fetchai.aea.fetchai.oef_search.OefSearchMessage.Success_PerformativeH\x00\x12n\n\x12unregister_service\x18\n \x01(\x0b\x32P.fetchai.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_PerformativeH\x00\x1a!\n\nAgentsInfo\x12\x13\n\x0b\x61gents_info\x18\x01 \x01(\x0c\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\xdc\x01\n\x11OefErrorOperation\x12\x62\n\toef_error\x18\x01 \x01(\x0e\x32O.fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.OefErrorEnum"c\n\x0cOefErrorEnum\x12\x14\n\x10REGISTER_SERVICE\x10\x00\x12\x16\n\x12UNREGISTER_SERVICE\x10\x01\x12\x13\n\x0fSEARCH_SERVICES\x10\x02\x12\x10\n\x0cSEND_MESSAGE\x10\x03\x1a\x96\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12Q\n\x07nothing\x18\x02 \x01(\x0b\x32>.fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1az\n\x1dRegister_Service_Performative\x12Y\n\x13service_description\x18\x01 \x01(\x0b\x32<.fetchai.aea.fetchai.oef_search.OefSearchMessage.Description\x1a|\n\x1fUnregister_Service_Performative\x12Y\n\x13service_description\x18\x01 \x01(\x0b\x32<.fetchai.aea.fetchai.oef_search.OefSearchMessage.Description\x1a\x65\n\x1cSearch_Services_Performative\x12\x45\n\x05query\x18\x01 \x01(\x0b\x32\x36.fetchai.aea.fetchai.oef_search.OefSearchMessage.Query\x1a~\n\x1aSearch_Result_Performative\x12\x0e\n\x06\x61gents\x18\x01 \x03(\t\x12P\n\x0b\x61gents_info\x18\x02 \x01(\x0b\x32;.fetchai.aea.fetchai.oef_search.OefSearchMessage.AgentsInfo\x1a\x16\n\x14Success_Performative\x1ay\n\x16Oef_Error_Performative\x12_\n\x13oef_error_operation\x18\x01 \x01(\x0b\x32\x42.fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperationB\x0e\n\x0cperformativeb\x06proto3' ), ) @@ -58,12 +58,50 @@ ], containing_type=None, serialized_options=None, - serialized_start=753, - serialized_end=852, + serialized_start=878, + serialized_end=977, ) _sym_db.RegisterEnumDescriptor(_OEFSEARCHMESSAGE_OEFERROROPERATION_OEFERRORENUM) +_OEFSEARCHMESSAGE_AGENTSINFO = _descriptor.Descriptor( + name="AgentsInfo", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.AgentsInfo", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="agents_info", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.AgentsInfo.agents_info", + index=0, + number=1, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=685, + serialized_end=718, +) + _OEFSEARCHMESSAGE_DESCRIPTION = _descriptor.Descriptor( name="Description", full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Description", @@ -98,8 +136,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=595, - serialized_end=629, + serialized_start=720, + serialized_end=754, ) _OEFSEARCHMESSAGE_OEFERROROPERATION = _descriptor.Descriptor( @@ -136,8 +174,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=632, - serialized_end=852, + serialized_start=757, + serialized_end=977, ) _OEFSEARCHMESSAGE_QUERY_NOTHING = _descriptor.Descriptor( @@ -155,8 +193,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=987, - serialized_end=996, + serialized_start=1112, + serialized_end=1121, ) _OEFSEARCHMESSAGE_QUERY = _descriptor.Descriptor( @@ -237,8 +275,8 @@ fields=[], ), ], - serialized_start=855, - serialized_end=1005, + serialized_start=980, + serialized_end=1130, ) _OEFSEARCHMESSAGE_REGISTER_SERVICE_PERFORMATIVE = _descriptor.Descriptor( @@ -275,8 +313,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1007, - serialized_end=1129, + serialized_start=1132, + serialized_end=1254, ) _OEFSEARCHMESSAGE_UNREGISTER_SERVICE_PERFORMATIVE = _descriptor.Descriptor( @@ -313,8 +351,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1131, - serialized_end=1255, + serialized_start=1256, + serialized_end=1380, ) _OEFSEARCHMESSAGE_SEARCH_SERVICES_PERFORMATIVE = _descriptor.Descriptor( @@ -351,8 +389,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1257, - serialized_end=1358, + serialized_start=1382, + serialized_end=1483, ) _OEFSEARCHMESSAGE_SEARCH_RESULT_PERFORMATIVE = _descriptor.Descriptor( @@ -380,6 +418,24 @@ serialized_options=None, file=DESCRIPTOR, ), + _descriptor.FieldDescriptor( + name="agents_info", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative.agents_info", + index=1, + number=2, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), ], extensions=[], nested_types=[], @@ -389,8 +445,27 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1360, - serialized_end=1404, + serialized_start=1485, + serialized_end=1611, +) + +_OEFSEARCHMESSAGE_SUCCESS_PERFORMATIVE = _descriptor.Descriptor( + name="Success_Performative", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Success_Performative", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=1613, + serialized_end=1635, ) _OEFSEARCHMESSAGE_OEF_ERROR_PERFORMATIVE = _descriptor.Descriptor( @@ -427,8 +502,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1406, - serialized_end=1527, + serialized_start=1637, + serialized_end=1758, ) _OEFSEARCHMESSAGE = _descriptor.Descriptor( @@ -511,8 +586,8 @@ file=DESCRIPTOR, ), _descriptor.FieldDescriptor( - name="unregister_service", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.unregister_service", + name="success", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.success", index=4, number=9, type=11, @@ -528,9 +603,28 @@ serialized_options=None, file=DESCRIPTOR, ), + _descriptor.FieldDescriptor( + name="unregister_service", + full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.unregister_service", + index=5, + number=10, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), ], extensions=[], nested_types=[ + _OEFSEARCHMESSAGE_AGENTSINFO, _OEFSEARCHMESSAGE_DESCRIPTION, _OEFSEARCHMESSAGE_OEFERROROPERATION, _OEFSEARCHMESSAGE_QUERY, @@ -538,6 +632,7 @@ _OEFSEARCHMESSAGE_UNREGISTER_SERVICE_PERFORMATIVE, _OEFSEARCHMESSAGE_SEARCH_SERVICES_PERFORMATIVE, _OEFSEARCHMESSAGE_SEARCH_RESULT_PERFORMATIVE, + _OEFSEARCHMESSAGE_SUCCESS_PERFORMATIVE, _OEFSEARCHMESSAGE_OEF_ERROR_PERFORMATIVE, ], enum_types=[], @@ -555,9 +650,10 @@ ), ], serialized_start=53, - serialized_end=1543, + serialized_end=1774, ) +_OEFSEARCHMESSAGE_AGENTSINFO.containing_type = _OEFSEARCHMESSAGE _OEFSEARCHMESSAGE_DESCRIPTION.containing_type = _OEFSEARCHMESSAGE _OEFSEARCHMESSAGE_OEFERROROPERATION.fields_by_name[ "oef_error" @@ -601,7 +697,11 @@ "query" ].message_type = _OEFSEARCHMESSAGE_QUERY _OEFSEARCHMESSAGE_SEARCH_SERVICES_PERFORMATIVE.containing_type = _OEFSEARCHMESSAGE +_OEFSEARCHMESSAGE_SEARCH_RESULT_PERFORMATIVE.fields_by_name[ + "agents_info" +].message_type = _OEFSEARCHMESSAGE_AGENTSINFO _OEFSEARCHMESSAGE_SEARCH_RESULT_PERFORMATIVE.containing_type = _OEFSEARCHMESSAGE +_OEFSEARCHMESSAGE_SUCCESS_PERFORMATIVE.containing_type = _OEFSEARCHMESSAGE _OEFSEARCHMESSAGE_OEF_ERROR_PERFORMATIVE.fields_by_name[ "oef_error_operation" ].message_type = _OEFSEARCHMESSAGE_OEFERROROPERATION @@ -618,6 +718,9 @@ _OEFSEARCHMESSAGE.fields_by_name[ "search_services" ].message_type = _OEFSEARCHMESSAGE_SEARCH_SERVICES_PERFORMATIVE +_OEFSEARCHMESSAGE.fields_by_name[ + "success" +].message_type = _OEFSEARCHMESSAGE_SUCCESS_PERFORMATIVE _OEFSEARCHMESSAGE.fields_by_name[ "unregister_service" ].message_type = _OEFSEARCHMESSAGE_UNREGISTER_SERVICE_PERFORMATIVE @@ -645,6 +748,12 @@ _OEFSEARCHMESSAGE.fields_by_name[ "search_services" ].containing_oneof = _OEFSEARCHMESSAGE.oneofs_by_name["performative"] +_OEFSEARCHMESSAGE.oneofs_by_name["performative"].fields.append( + _OEFSEARCHMESSAGE.fields_by_name["success"] +) +_OEFSEARCHMESSAGE.fields_by_name[ + "success" +].containing_oneof = _OEFSEARCHMESSAGE.oneofs_by_name["performative"] _OEFSEARCHMESSAGE.oneofs_by_name["performative"].fields.append( _OEFSEARCHMESSAGE.fields_by_name["unregister_service"] ) @@ -658,6 +767,15 @@ "OefSearchMessage", (_message.Message,), dict( + AgentsInfo=_reflection.GeneratedProtocolMessageType( + "AgentsInfo", + (_message.Message,), + dict( + DESCRIPTOR=_OEFSEARCHMESSAGE_AGENTSINFO, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.AgentsInfo) + ), + ), Description=_reflection.GeneratedProtocolMessageType( "Description", (_message.Message,), @@ -730,6 +848,15 @@ # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative) ), ), + Success_Performative=_reflection.GeneratedProtocolMessageType( + "Success_Performative", + (_message.Message,), + dict( + DESCRIPTOR=_OEFSEARCHMESSAGE_SUCCESS_PERFORMATIVE, + __module__="oef_search_pb2" + # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Success_Performative) + ), + ), Oef_Error_Performative=_reflection.GeneratedProtocolMessageType( "Oef_Error_Performative", (_message.Message,), @@ -745,6 +872,7 @@ ), ) _sym_db.RegisterMessage(OefSearchMessage) +_sym_db.RegisterMessage(OefSearchMessage.AgentsInfo) _sym_db.RegisterMessage(OefSearchMessage.Description) _sym_db.RegisterMessage(OefSearchMessage.OefErrorOperation) _sym_db.RegisterMessage(OefSearchMessage.Query) @@ -753,6 +881,7 @@ _sym_db.RegisterMessage(OefSearchMessage.Unregister_Service_Performative) _sym_db.RegisterMessage(OefSearchMessage.Search_Services_Performative) _sym_db.RegisterMessage(OefSearchMessage.Search_Result_Performative) +_sym_db.RegisterMessage(OefSearchMessage.Success_Performative) _sym_db.RegisterMessage(OefSearchMessage.Oef_Error_Performative) diff --git a/packages/fetchai/protocols/oef_search/protocol.yaml b/packages/fetchai/protocols/oef_search/protocol.yaml index e17d136632..57d1a6fe0d 100644 --- a/packages/fetchai/protocols/oef_search/protocol.yaml +++ b/packages/fetchai/protocols/oef_search/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: dialogues.py: QmQPLnW3jAs6tLLmhkX4C7texGRHM9bfdjs83dUH5TkJ4v message.py: QmXj8MgvPtJKXZyhTnTfpXEZoAz4Z1u6wbMwMkKCRgvujL oef_search.proto: QmSq22zt3zpiLyTTDzPo71QCCFebxpHgSKK1PWfo2cMNyh - oef_search_pb2.py: QmYLWpKURppQihWhsVrWm88D6MGN4we928nfJpdU4SCpBg + oef_search_pb2.py: QmaEHK8KG6q2nkZA9i2fvGyHKGLhK85UZDenRD3ig5FUK8 serialization.py: QmSZA26BK7zdb7rJ6Fkca2dVBjUaegM7vCrTtpGshssFPj fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/hashes.csv b/packages/hashes.csv index cec1686f50..9ec4261188 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -41,7 +41,7 @@ fetchai/protocols/gym,QmQ5dPRpfbVJgqmdr1dCRrt7cjSqFWe3mmehY1KpQ24Jng fetchai/protocols/http,QmSTPtXUYGhs5m61DJpbB5Gs9jjSp479BPoCaM77nzpVN2 fetchai/protocols/ledger_api,QmfJYfDbK8a8RePE6aR7sxjwSUPrCtXAAxonxsKmsX6xbe fetchai/protocols/ml_trade,QmbWkEMnyQAFgz3UnE7Uq7drBYCGm218NHfGPXPgmbF8mc -fetchai/protocols/oef_search,QmNV5EtgUnNoouMH14eC8axntvtk5g3ZXnQJiweLEb3C8L +fetchai/protocols/oef_search,QmZjFCHov7jgQ3dKBndyz1MDkZHzv1DHxKQm6BnZrQS924 fetchai/protocols/scaffold,QmZhHsoA7JzNSoSUABFWqyRELaei4BtKYce1QKVcHhnQJN fetchai/protocols/signing,QmUepyAA8tn5CsGjg1aCLRjbi611KYpPKLnNJbEdntdZyM fetchai/protocols/state_update,QmdpQnN23UNKSvt6gtkFrV4qsnRbKuNNBFAKAGuzharTAj From 834105e65a5f055c6950b195128069c5be313b46 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 14 Sep 2020 14:48:34 +0200 Subject: [PATCH 021/155] add more log messages --- scripts/generate_all_protocols.py | 42 ++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/scripts/generate_all_protocols.py b/scripts/generate_all_protocols.py index f9fd01d099..22b121ed35 100755 --- a/scripts/generate_all_protocols.py +++ b/scripts/generate_all_protocols.py @@ -28,6 +28,7 @@ It requires the `aea` package, `black` and `isort` tools. """ +import logging import operator import os import pprint @@ -67,6 +68,23 @@ ) +def _setup_logger() -> logging.Logger: + """Set up the logger.""" + FORMAT = "[%(asctime)s][%(levelname)s] %(message)s" + logging.basicConfig(format=FORMAT) + logger_ = logging.getLogger("generate_all_protocols") + logger_.setLevel(logging.INFO) + return logger_ + + +logger = _setup_logger() + + +def log(message: str, level: int = logging.INFO): + """Produce a logging message.""" + logger.log(level, message) + + def enforce(condition, message=""): """Custom assertion.""" if not condition: @@ -137,6 +155,7 @@ def _load_protocol_specification_from_string( def _get_protocol_specification_from_readme(package_path: Path) -> str: """Get the protocol specification from the package README.""" + log(f"Get protocol specification from README {package_path}") readme = package_path / "README.md" readme_content = readme.read_text() enforce( @@ -165,7 +184,9 @@ def _save_specification_in_temporary_file(name: str, specification_content: str) """ # here, the cwd is the temporary AEA project # hence, we are writing in a temporary directory - Path("..", name + ".yaml").write_text(specification_content) + spec_path = Path("..", name + ".yaml") + log(f"Save specification '{name}' in temporary file {spec_path}") + spec_path.write_text(specification_content) def _generate_protocol(package_path: Path) -> None: @@ -175,7 +196,9 @@ def _generate_protocol(package_path: Path) -> None: :param package_path: package to the path. :return: None """ - run_aea("generate", "protocol", os.path.join("..", package_path.name) + ".yaml") + cmd = ["generate", "protocol", os.path.join("..", package_path.name) + ".yaml"] + log(f"Generate the protocol. Command: {pprint.pformat(cmd)}") + run_aea(*cmd) def replace_in_directory(name: str): @@ -185,11 +208,14 @@ def replace_in_directory(name: str): :param name: the protocol name. :return: None """ + log(f"Replace prefix of import statements in directory '{name}'") replace_replacement_pairs = [ (f"from packages.fetchai.protocols.{name}", f"from aea.protocols.{name}"), (f"aea.packages.fetchai.protocols.{name}", f"aea.protocols.{name}"), ] - for submodule in Path("protocols", name).rglob("*.py"): + package_dir = Path("protocols", name) + for submodule in package_dir.rglob("*.py"): + log(f"Process submodule {submodule.relative_to(package_dir)}") for to_replace, replacement in replace_replacement_pairs: if to_replace not in submodule.read_text(): continue @@ -211,7 +237,7 @@ def _fix_generated_protocol(package_path: Path) -> None: Used also to recover the protocol name. :return: None """ - # restore original custom types. + log(f"Restore original custom types in {package_path}") custom_types_module = package_path / CUSTOM_TYPE_MODULE_NAME if custom_types_module.exists(): file_to_replace = Path("protocols", package_path.name, CUSTOM_TYPE_MODULE_NAME) @@ -219,11 +245,12 @@ def _fix_generated_protocol(package_path: Path) -> None: # if it is a library protocol, replace import prefixes. if package_path.parents[1].name == "aea": + log("Replace import prefixes (it's a library protocol)") replace_in_directory(package_path.name) - # copy the README package_readme_file = package_path / README_FILENAME if package_readme_file.exists(): + log(f"Copy the README {package_readme_file} into the new generated protocol.") shutil.copyfile( package_readme_file, Path("protocols", package_path.name, README_FILENAME) ) @@ -237,13 +264,14 @@ def _update_original_protocol(package_path: Path) -> None: Used to recover the protocol name. :return: None """ + log(f"Copy the new protocol into the original directory {package_path}") shutil.rmtree(package_path) shutil.copytree(Path("protocols", package_path.name), package_path) def _fingerprint_protocol(name: str): """Fingerprint the generated (and modified) protocol.""" - # recover public id. + log(f"Fingerprint the generated (and modified) protocol '{name}'") protocol_config = load_component_configuration( ComponentType.PROTOCOL, Path("protocols", name), skip_consistency_check=True ) @@ -291,6 +319,8 @@ def main(): run_aea("remove", "protocol", "fetchai/default:0.5.0") for package_path in PROTOCOL_PATHS: + log("=" * 100) + log(f"Processing protocol at path {package_path}") _process_protocol(package_path) From 614711f43f157450bb1461b9227e06447912b833 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 14 Sep 2020 20:27:42 +0200 Subject: [PATCH 022/155] change package prefix from 'fetchai.aea' to 'aea' --- aea/protocols/default/default.proto | 2 +- aea/protocols/default/default_pb2.py | 70 ++-- aea/protocols/default/protocol.yaml | 4 +- aea/protocols/generator/base.py | 2 +- aea/protocols/signing/protocol.yaml | 4 +- aea/protocols/signing/signing.proto | 2 +- aea/protocols/signing/signing_pb2.py | 144 ++++---- aea/protocols/state_update/protocol.yaml | 4 +- aea/protocols/state_update/state_update.proto | 2 +- .../state_update/state_update_pb2.py | 118 +++--- .../protocols/contract_api/contract_api.proto | 2 +- .../contract_api/contract_api_pb2.py | 188 +++++----- .../protocols/contract_api/protocol.yaml | 4 +- packages/fetchai/protocols/fipa/fipa.proto | 2 +- packages/fetchai/protocols/fipa/fipa_pb2.py | 174 ++++----- packages/fetchai/protocols/fipa/protocol.yaml | 4 +- packages/fetchai/protocols/gym/gym.proto | 2 +- packages/fetchai/protocols/gym/gym_pb2.py | 102 +++--- packages/fetchai/protocols/gym/protocol.yaml | 4 +- packages/fetchai/protocols/http/http.proto | 2 +- packages/fetchai/protocols/http/http_pb2.py | 54 +-- packages/fetchai/protocols/http/protocol.yaml | 4 +- .../protocols/ledger_api/ledger_api.proto | 2 +- .../protocols/ledger_api/ledger_api_pb2.py | 184 +++++----- .../protocols/ledger_api/protocol.yaml | 4 +- .../fetchai/protocols/ml_trade/ml_trade.proto | 2 +- .../protocols/ml_trade/ml_trade_pb2.py | 100 +++--- .../fetchai/protocols/ml_trade/protocol.yaml | 4 +- .../protocols/oef_search/oef_search.proto | 2 +- .../protocols/oef_search/oef_search_pb2.py | 146 ++++---- .../protocols/oef_search/protocol.yaml | 4 +- packages/fetchai/protocols/tac/protocol.yaml | 4 +- packages/fetchai/protocols/tac/tac.proto | 2 +- packages/fetchai/protocols/tac/tac_pb2.py | 336 +++++++++--------- 34 files changed, 842 insertions(+), 842 deletions(-) diff --git a/aea/protocols/default/default.proto b/aea/protocols/default/default.proto index 5d21b1d1bd..47d7000c7d 100644 --- a/aea/protocols/default/default.proto +++ b/aea/protocols/default/default.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.default; +package aea.fetchai.default; message DefaultMessage{ diff --git a/aea/protocols/default/default_pb2.py b/aea/protocols/default/default_pb2.py index c746bc5de1..14273a0b8d 100644 --- a/aea/protocols/default/default_pb2.py +++ b/aea/protocols/default/default_pb2.py @@ -16,18 +16,18 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="default.proto", - package="fetchai.aea.fetchai.default", + package="aea.fetchai.default", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\rdefault.proto\x12\x1b\x66\x65tchai.aea.fetchai.default"\xdb\x05\n\x0e\x44\x65\x66\x61ultMessage\x12O\n\x05\x62ytes\x18\x05 \x01(\x0b\x32>.fetchai.aea.fetchai.default.DefaultMessage.Bytes_PerformativeH\x00\x12O\n\x05\x65rror\x18\x06 \x01(\x0b\x32>.fetchai.aea.fetchai.default.DefaultMessage.Error_PerformativeH\x00\x1a\xe5\x01\n\tErrorCode\x12W\n\nerror_code\x18\x01 \x01(\x0e\x32\x43.fetchai.aea.fetchai.default.DefaultMessage.ErrorCode.ErrorCodeEnum"\x7f\n\rErrorCodeEnum\x12\x18\n\x14UNSUPPORTED_PROTOCOL\x10\x00\x12\x12\n\x0e\x44\x45\x43ODING_ERROR\x10\x01\x12\x13\n\x0fINVALID_MESSAGE\x10\x02\x12\x15\n\x11UNSUPPORTED_SKILL\x10\x03\x12\x14\n\x10INVALID_DIALOGUE\x10\x04\x1a%\n\x12\x42ytes_Performative\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x1a\x87\x02\n\x12\x45rror_Performative\x12I\n\nerror_code\x18\x01 \x01(\x0b\x32\x35.fetchai.aea.fetchai.default.DefaultMessage.ErrorCode\x12\x11\n\terror_msg\x18\x02 \x01(\t\x12\x61\n\nerror_data\x18\x03 \x03(\x0b\x32M.fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry\x1a\x30\n\x0e\x45rrorDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' + '\n\rdefault.proto\x12\x13\x61\x65\x61.fetchai.default"\xb3\x05\n\x0e\x44\x65\x66\x61ultMessage\x12G\n\x05\x62ytes\x18\x05 \x01(\x0b\x32\x36.aea.fetchai.default.DefaultMessage.Bytes_PerformativeH\x00\x12G\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x36.aea.fetchai.default.DefaultMessage.Error_PerformativeH\x00\x1a\xdd\x01\n\tErrorCode\x12O\n\nerror_code\x18\x01 \x01(\x0e\x32;.aea.fetchai.default.DefaultMessage.ErrorCode.ErrorCodeEnum"\x7f\n\rErrorCodeEnum\x12\x18\n\x14UNSUPPORTED_PROTOCOL\x10\x00\x12\x12\n\x0e\x44\x45\x43ODING_ERROR\x10\x01\x12\x13\n\x0fINVALID_MESSAGE\x10\x02\x12\x15\n\x11UNSUPPORTED_SKILL\x10\x03\x12\x14\n\x10INVALID_DIALOGUE\x10\x04\x1a%\n\x12\x42ytes_Performative\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x1a\xf7\x01\n\x12\x45rror_Performative\x12\x41\n\nerror_code\x18\x01 \x01(\x0b\x32-.aea.fetchai.default.DefaultMessage.ErrorCode\x12\x11\n\terror_msg\x18\x02 \x01(\t\x12Y\n\nerror_data\x18\x03 \x03(\x0b\x32\x45.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry\x1a\x30\n\x0e\x45rrorDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' ), ) _DEFAULTMESSAGE_ERRORCODE_ERRORCODEENUM = _descriptor.EnumDescriptor( name="ErrorCodeEnum", - full_name="fetchai.aea.fetchai.default.DefaultMessage.ErrorCode.ErrorCodeEnum", + full_name="aea.fetchai.default.DefaultMessage.ErrorCode.ErrorCodeEnum", filename=None, file=DESCRIPTOR, values=[ @@ -65,22 +65,22 @@ ], containing_type=None, serialized_options=None, - serialized_start=330, - serialized_end=457, + serialized_start=298, + serialized_end=425, ) _sym_db.RegisterEnumDescriptor(_DEFAULTMESSAGE_ERRORCODE_ERRORCODEENUM) _DEFAULTMESSAGE_ERRORCODE = _descriptor.Descriptor( name="ErrorCode", - full_name="fetchai.aea.fetchai.default.DefaultMessage.ErrorCode", + full_name="aea.fetchai.default.DefaultMessage.ErrorCode", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetchai.aea.fetchai.default.DefaultMessage.ErrorCode.error_code", + full_name="aea.fetchai.default.DefaultMessage.ErrorCode.error_code", index=0, number=1, type=14, @@ -105,20 +105,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=228, - serialized_end=457, + serialized_start=204, + serialized_end=425, ) _DEFAULTMESSAGE_BYTES_PERFORMATIVE = _descriptor.Descriptor( name="Bytes_Performative", - full_name="fetchai.aea.fetchai.default.DefaultMessage.Bytes_Performative", + full_name="aea.fetchai.default.DefaultMessage.Bytes_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content", - full_name="fetchai.aea.fetchai.default.DefaultMessage.Bytes_Performative.content", + full_name="aea.fetchai.default.DefaultMessage.Bytes_Performative.content", index=0, number=1, type=12, @@ -143,20 +143,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=459, - serialized_end=496, + serialized_start=427, + serialized_end=464, ) _DEFAULTMESSAGE_ERROR_PERFORMATIVE_ERRORDATAENTRY = _descriptor.Descriptor( name="ErrorDataEntry", - full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry", + full_name="aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry.key", + full_name="aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry.key", index=0, number=1, type=9, @@ -174,7 +174,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry.value", + full_name="aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry.value", index=1, number=2, type=12, @@ -199,20 +199,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=714, - serialized_end=762, + serialized_start=666, + serialized_end=714, ) _DEFAULTMESSAGE_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Error_Performative", - full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative", + full_name="aea.fetchai.default.DefaultMessage.Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.error_code", + full_name="aea.fetchai.default.DefaultMessage.Error_Performative.error_code", index=0, number=1, type=11, @@ -230,7 +230,7 @@ ), _descriptor.FieldDescriptor( name="error_msg", - full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.error_msg", + full_name="aea.fetchai.default.DefaultMessage.Error_Performative.error_msg", index=1, number=2, type=9, @@ -248,7 +248,7 @@ ), _descriptor.FieldDescriptor( name="error_data", - full_name="fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.error_data", + full_name="aea.fetchai.default.DefaultMessage.Error_Performative.error_data", index=2, number=3, type=11, @@ -273,20 +273,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=499, - serialized_end=762, + serialized_start=467, + serialized_end=714, ) _DEFAULTMESSAGE = _descriptor.Descriptor( name="DefaultMessage", - full_name="fetchai.aea.fetchai.default.DefaultMessage", + full_name="aea.fetchai.default.DefaultMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="bytes", - full_name="fetchai.aea.fetchai.default.DefaultMessage.bytes", + full_name="aea.fetchai.default.DefaultMessage.bytes", index=0, number=5, type=11, @@ -304,7 +304,7 @@ ), _descriptor.FieldDescriptor( name="error", - full_name="fetchai.aea.fetchai.default.DefaultMessage.error", + full_name="aea.fetchai.default.DefaultMessage.error", index=1, number=6, type=11, @@ -335,14 +335,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.default.DefaultMessage.performative", + full_name="aea.fetchai.default.DefaultMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=47, - serialized_end=778, + serialized_start=39, + serialized_end=730, ) _DEFAULTMESSAGE_ERRORCODE.fields_by_name[ @@ -392,7 +392,7 @@ dict( DESCRIPTOR=_DEFAULTMESSAGE_ERRORCODE, __module__="default_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.default.DefaultMessage.ErrorCode) + # @@protoc_insertion_point(class_scope:aea.fetchai.default.DefaultMessage.ErrorCode) ), ), Bytes_Performative=_reflection.GeneratedProtocolMessageType( @@ -401,7 +401,7 @@ dict( DESCRIPTOR=_DEFAULTMESSAGE_BYTES_PERFORMATIVE, __module__="default_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.default.DefaultMessage.Bytes_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.default.DefaultMessage.Bytes_Performative) ), ), Error_Performative=_reflection.GeneratedProtocolMessageType( @@ -414,17 +414,17 @@ dict( DESCRIPTOR=_DEFAULTMESSAGE_ERROR_PERFORMATIVE_ERRORDATAENTRY, __module__="default_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.default.DefaultMessage.Error_Performative.ErrorDataEntry) ), ), DESCRIPTOR=_DEFAULTMESSAGE_ERROR_PERFORMATIVE, __module__="default_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.default.DefaultMessage.Error_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.default.DefaultMessage.Error_Performative) ), ), DESCRIPTOR=_DEFAULTMESSAGE, __module__="default_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.default.DefaultMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.default.DefaultMessage) ), ) _sym_db.RegisterMessage(DefaultMessage) diff --git a/aea/protocols/default/protocol.yaml b/aea/protocols/default/protocol.yaml index 8d23821b81..c8df1426cb 100644 --- a/aea/protocols/default/protocol.yaml +++ b/aea/protocols/default/protocol.yaml @@ -9,8 +9,8 @@ fingerprint: README.md: QmP3q9463opixzdv17QXkCSQvgR8KJXgLAVkfUPpdHJzPv __init__.py: QmPMtKUrzVJp594VqNuapJzCesWLQ6Awjqv2ufG3wKNRmH custom_types.py: QmRcgwDdTxkSHyfF9eoMtsb5P5GJDm4oyLq5W6ZBko1MFU - default.proto: QmUgEHG3L7M6ar7E4BDdTpUV8UWhbTbW2etFAk1FtDWuk1 - default_pb2.py: QmWZGRz16egJBqQVNJ5sN5VEeTSoCq85eJEUqTPqn4caFQ + default.proto: QmbbAXpav8jfU1r59afGbLAj3FpPXEwWuezPocAMyqcfax + default_pb2.py: QmT2nZidwAd5jkXyx3UWkapUpsiEfjwUr6a8DKboSujokt dialogues.py: Qmc991snbS7DwFxo1cKcq1rQ2uj7y8ukp14kfe2zve387C message.py: QmeaadvKib9QqpjZgd7NiDUqGRpC2eZPVpgq1dY3PYacht serialization.py: QmcRk22hZ49s2HLUNPXBYWTnUkFjuNnVwVWp3yfxfbaQDd diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index e04094b8bf..e666b99bc7 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -1760,7 +1760,7 @@ def _protocol_buffer_schema_str(self) -> str: # heading proto_buff_schema_str = self.indent + 'syntax = "proto3";\n\n' - proto_buff_schema_str += self.indent + "package fetchai.aea.{}.{};\n\n".format( + proto_buff_schema_str += self.indent + "package aea.{}.{};\n\n".format( self.protocol_specification.author, self.protocol_specification.name ) proto_buff_schema_str += self.indent + "message {}Message{{\n\n".format( diff --git a/aea/protocols/signing/protocol.yaml b/aea/protocols/signing/protocol.yaml index 8f1d1d4d15..00bdb60def 100644 --- a/aea/protocols/signing/protocol.yaml +++ b/aea/protocols/signing/protocol.yaml @@ -12,8 +12,8 @@ fingerprint: dialogues.py: QmQ1WKs3Dn15oDSwpc4N8hdADLxrn76U4X5SiLAmyGiPPY message.py: QmWMUnBpZxBq1PDZ6JsR9vwaKdywBHvL5hghekWeph8j9B serialization.py: QmT4wm2vP8QUFYCCaCCNNe4kMGgPCsFqkBTvKJFUYDJC4S - signing.proto: QmZEfnzAacy2rtbqZrPUqPBECRDbJPg5GDcZUyiSAah8Kt - signing_pb2.py: QmbZvzqyJWpqttSFwK6wx3gHrrTFiajs2hmFZVsSKFtVZR + signing.proto: QmZN9CmcfXCBiMQd9GTG81LadsbVQQ7j5pLFxEiQsQ4Sqk + signing_pb2.py: QmYQH8PDeC25ysrxeqh4nNv38bUL7jv9gRhta9gaNiXLL2 fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/aea/protocols/signing/signing.proto b/aea/protocols/signing/signing.proto index 730093bc93..4599cd9321 100644 --- a/aea/protocols/signing/signing.proto +++ b/aea/protocols/signing/signing.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.signing; +package aea.fetchai.signing; message SigningMessage{ diff --git a/aea/protocols/signing/signing_pb2.py b/aea/protocols/signing/signing_pb2.py index 8f83d28cc2..30a7f345d5 100644 --- a/aea/protocols/signing/signing_pb2.py +++ b/aea/protocols/signing/signing_pb2.py @@ -16,18 +16,18 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="signing.proto", - package="fetchai.aea.fetchai.signing", + package="aea.fetchai.signing", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\rsigning.proto\x12\x1b\x66\x65tchai.aea.fetchai.signing"\xbc\x0c\n\x0eSigningMessage\x12O\n\x05\x65rror\x18\x05 \x01(\x0b\x32>.fetchai.aea.fetchai.signing.SigningMessage.Error_PerformativeH\x00\x12]\n\x0csign_message\x18\x06 \x01(\x0b\x32\x45.fetchai.aea.fetchai.signing.SigningMessage.Sign_Message_PerformativeH\x00\x12\x65\n\x10sign_transaction\x18\x07 \x01(\x0b\x32I.fetchai.aea.fetchai.signing.SigningMessage.Sign_Transaction_PerformativeH\x00\x12\x61\n\x0esigned_message\x18\x08 \x01(\x0b\x32G.fetchai.aea.fetchai.signing.SigningMessage.Signed_Message_PerformativeH\x00\x12i\n\x12signed_transaction\x18\t \x01(\x0b\x32K.fetchai.aea.fetchai.signing.SigningMessage.Signed_Transaction_PerformativeH\x00\x1a\xbd\x01\n\tErrorCode\x12W\n\nerror_code\x18\x01 \x01(\x0e\x32\x43.fetchai.aea.fetchai.signing.SigningMessage.ErrorCode.ErrorCodeEnum"W\n\rErrorCodeEnum\x12 \n\x1cUNSUCCESSFUL_MESSAGE_SIGNING\x10\x00\x12$\n UNSUCCESSFUL_TRANSACTION_SIGNING\x10\x01\x1a!\n\nRawMessage\x12\x13\n\x0braw_message\x18\x01 \x01(\x0c\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a\'\n\rSignedMessage\x12\x16\n\x0esigned_message\x18\x01 \x01(\x0c\x1a/\n\x11SignedTransaction\x12\x1a\n\x12signed_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05Terms\x12\r\n\x05terms\x18\x01 \x01(\x0c\x1a\xb6\x01\n\x1dSign_Transaction_Performative\x12@\n\x05terms\x18\x01 \x01(\x0b\x32\x31.fetchai.aea.fetchai.signing.SigningMessage.Terms\x12S\n\x0fraw_transaction\x18\x02 \x01(\x0b\x32:.fetchai.aea.fetchai.signing.SigningMessage.RawTransaction\x1a\xaa\x01\n\x19Sign_Message_Performative\x12@\n\x05terms\x18\x01 \x01(\x0b\x32\x31.fetchai.aea.fetchai.signing.SigningMessage.Terms\x12K\n\x0braw_message\x18\x02 \x01(\x0b\x32\x36.fetchai.aea.fetchai.signing.SigningMessage.RawMessage\x1a|\n\x1fSigned_Transaction_Performative\x12Y\n\x12signed_transaction\x18\x01 \x01(\x0b\x32=.fetchai.aea.fetchai.signing.SigningMessage.SignedTransaction\x1ap\n\x1bSigned_Message_Performative\x12Q\n\x0esigned_message\x18\x01 \x01(\x0b\x32\x39.fetchai.aea.fetchai.signing.SigningMessage.SignedMessage\x1a_\n\x12\x45rror_Performative\x12I\n\nerror_code\x18\x01 \x01(\x0b\x32\x35.fetchai.aea.fetchai.signing.SigningMessage.ErrorCodeB\x0e\n\x0cperformativeb\x06proto3' + '\n\rsigning.proto\x12\x13\x61\x65\x61.fetchai.signing"\xd4\x0b\n\x0eSigningMessage\x12G\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x36.aea.fetchai.signing.SigningMessage.Error_PerformativeH\x00\x12U\n\x0csign_message\x18\x06 \x01(\x0b\x32=.aea.fetchai.signing.SigningMessage.Sign_Message_PerformativeH\x00\x12]\n\x10sign_transaction\x18\x07 \x01(\x0b\x32\x41.aea.fetchai.signing.SigningMessage.Sign_Transaction_PerformativeH\x00\x12Y\n\x0esigned_message\x18\x08 \x01(\x0b\x32?.aea.fetchai.signing.SigningMessage.Signed_Message_PerformativeH\x00\x12\x61\n\x12signed_transaction\x18\t \x01(\x0b\x32\x43.aea.fetchai.signing.SigningMessage.Signed_Transaction_PerformativeH\x00\x1a\xb5\x01\n\tErrorCode\x12O\n\nerror_code\x18\x01 \x01(\x0e\x32;.aea.fetchai.signing.SigningMessage.ErrorCode.ErrorCodeEnum"W\n\rErrorCodeEnum\x12 \n\x1cUNSUCCESSFUL_MESSAGE_SIGNING\x10\x00\x12$\n UNSUCCESSFUL_TRANSACTION_SIGNING\x10\x01\x1a!\n\nRawMessage\x12\x13\n\x0braw_message\x18\x01 \x01(\x0c\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a\'\n\rSignedMessage\x12\x16\n\x0esigned_message\x18\x01 \x01(\x0c\x1a/\n\x11SignedTransaction\x12\x1a\n\x12signed_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05Terms\x12\r\n\x05terms\x18\x01 \x01(\x0c\x1a\xa6\x01\n\x1dSign_Transaction_Performative\x12\x38\n\x05terms\x18\x01 \x01(\x0b\x32).aea.fetchai.signing.SigningMessage.Terms\x12K\n\x0fraw_transaction\x18\x02 \x01(\x0b\x32\x32.aea.fetchai.signing.SigningMessage.RawTransaction\x1a\x9a\x01\n\x19Sign_Message_Performative\x12\x38\n\x05terms\x18\x01 \x01(\x0b\x32).aea.fetchai.signing.SigningMessage.Terms\x12\x43\n\x0braw_message\x18\x02 \x01(\x0b\x32..aea.fetchai.signing.SigningMessage.RawMessage\x1at\n\x1fSigned_Transaction_Performative\x12Q\n\x12signed_transaction\x18\x01 \x01(\x0b\x32\x35.aea.fetchai.signing.SigningMessage.SignedTransaction\x1ah\n\x1bSigned_Message_Performative\x12I\n\x0esigned_message\x18\x01 \x01(\x0b\x32\x31.aea.fetchai.signing.SigningMessage.SignedMessage\x1aW\n\x12\x45rror_Performative\x12\x41\n\nerror_code\x18\x01 \x01(\x0b\x32-.aea.fetchai.signing.SigningMessage.ErrorCodeB\x0e\n\x0cperformativeb\x06proto3' ), ) _SIGNINGMESSAGE_ERRORCODE_ERRORCODEENUM = _descriptor.EnumDescriptor( name="ErrorCodeEnum", - full_name="fetchai.aea.fetchai.signing.SigningMessage.ErrorCode.ErrorCodeEnum", + full_name="aea.fetchai.signing.SigningMessage.ErrorCode.ErrorCodeEnum", filename=None, file=DESCRIPTOR, values=[ @@ -48,22 +48,22 @@ ], containing_type=None, serialized_options=None, - serialized_start=653, - serialized_end=740, + serialized_start=597, + serialized_end=684, ) _sym_db.RegisterEnumDescriptor(_SIGNINGMESSAGE_ERRORCODE_ERRORCODEENUM) _SIGNINGMESSAGE_ERRORCODE = _descriptor.Descriptor( name="ErrorCode", - full_name="fetchai.aea.fetchai.signing.SigningMessage.ErrorCode", + full_name="aea.fetchai.signing.SigningMessage.ErrorCode", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetchai.aea.fetchai.signing.SigningMessage.ErrorCode.error_code", + full_name="aea.fetchai.signing.SigningMessage.ErrorCode.error_code", index=0, number=1, type=14, @@ -88,20 +88,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=551, - serialized_end=740, + serialized_start=503, + serialized_end=684, ) _SIGNINGMESSAGE_RAWMESSAGE = _descriptor.Descriptor( name="RawMessage", - full_name="fetchai.aea.fetchai.signing.SigningMessage.RawMessage", + full_name="aea.fetchai.signing.SigningMessage.RawMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_message", - full_name="fetchai.aea.fetchai.signing.SigningMessage.RawMessage.raw_message", + full_name="aea.fetchai.signing.SigningMessage.RawMessage.raw_message", index=0, number=1, type=12, @@ -126,20 +126,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=742, - serialized_end=775, + serialized_start=686, + serialized_end=719, ) _SIGNINGMESSAGE_RAWTRANSACTION = _descriptor.Descriptor( name="RawTransaction", - full_name="fetchai.aea.fetchai.signing.SigningMessage.RawTransaction", + full_name="aea.fetchai.signing.SigningMessage.RawTransaction", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetchai.aea.fetchai.signing.SigningMessage.RawTransaction.raw_transaction", + full_name="aea.fetchai.signing.SigningMessage.RawTransaction.raw_transaction", index=0, number=1, type=12, @@ -164,20 +164,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=777, - serialized_end=818, + serialized_start=721, + serialized_end=762, ) _SIGNINGMESSAGE_SIGNEDMESSAGE = _descriptor.Descriptor( name="SignedMessage", - full_name="fetchai.aea.fetchai.signing.SigningMessage.SignedMessage", + full_name="aea.fetchai.signing.SigningMessage.SignedMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_message", - full_name="fetchai.aea.fetchai.signing.SigningMessage.SignedMessage.signed_message", + full_name="aea.fetchai.signing.SigningMessage.SignedMessage.signed_message", index=0, number=1, type=12, @@ -202,20 +202,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=820, - serialized_end=859, + serialized_start=764, + serialized_end=803, ) _SIGNINGMESSAGE_SIGNEDTRANSACTION = _descriptor.Descriptor( name="SignedTransaction", - full_name="fetchai.aea.fetchai.signing.SigningMessage.SignedTransaction", + full_name="aea.fetchai.signing.SigningMessage.SignedTransaction", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_transaction", - full_name="fetchai.aea.fetchai.signing.SigningMessage.SignedTransaction.signed_transaction", + full_name="aea.fetchai.signing.SigningMessage.SignedTransaction.signed_transaction", index=0, number=1, type=12, @@ -240,20 +240,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=861, - serialized_end=908, + serialized_start=805, + serialized_end=852, ) _SIGNINGMESSAGE_TERMS = _descriptor.Descriptor( name="Terms", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Terms", + full_name="aea.fetchai.signing.SigningMessage.Terms", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Terms.terms", + full_name="aea.fetchai.signing.SigningMessage.Terms.terms", index=0, number=1, type=12, @@ -278,20 +278,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=910, - serialized_end=932, + serialized_start=854, + serialized_end=876, ) _SIGNINGMESSAGE_SIGN_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Sign_Transaction_Performative", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative", + full_name="aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative.terms", + full_name="aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative.terms", index=0, number=1, type=11, @@ -309,7 +309,7 @@ ), _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative.raw_transaction", + full_name="aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative.raw_transaction", index=1, number=2, type=11, @@ -334,20 +334,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=935, - serialized_end=1117, + serialized_start=879, + serialized_end=1045, ) _SIGNINGMESSAGE_SIGN_MESSAGE_PERFORMATIVE = _descriptor.Descriptor( name="Sign_Message_Performative", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Message_Performative", + full_name="aea.fetchai.signing.SigningMessage.Sign_Message_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Message_Performative.terms", + full_name="aea.fetchai.signing.SigningMessage.Sign_Message_Performative.terms", index=0, number=1, type=11, @@ -365,7 +365,7 @@ ), _descriptor.FieldDescriptor( name="raw_message", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Sign_Message_Performative.raw_message", + full_name="aea.fetchai.signing.SigningMessage.Sign_Message_Performative.raw_message", index=1, number=2, type=11, @@ -390,20 +390,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1120, - serialized_end=1290, + serialized_start=1048, + serialized_end=1202, ) _SIGNINGMESSAGE_SIGNED_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Signed_Transaction_Performative", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Signed_Transaction_Performative", + full_name="aea.fetchai.signing.SigningMessage.Signed_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_transaction", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Signed_Transaction_Performative.signed_transaction", + full_name="aea.fetchai.signing.SigningMessage.Signed_Transaction_Performative.signed_transaction", index=0, number=1, type=11, @@ -428,20 +428,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1292, - serialized_end=1416, + serialized_start=1204, + serialized_end=1320, ) _SIGNINGMESSAGE_SIGNED_MESSAGE_PERFORMATIVE = _descriptor.Descriptor( name="Signed_Message_Performative", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Signed_Message_Performative", + full_name="aea.fetchai.signing.SigningMessage.Signed_Message_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_message", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Signed_Message_Performative.signed_message", + full_name="aea.fetchai.signing.SigningMessage.Signed_Message_Performative.signed_message", index=0, number=1, type=11, @@ -466,20 +466,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1418, - serialized_end=1530, + serialized_start=1322, + serialized_end=1426, ) _SIGNINGMESSAGE_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Error_Performative", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Error_Performative", + full_name="aea.fetchai.signing.SigningMessage.Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetchai.aea.fetchai.signing.SigningMessage.Error_Performative.error_code", + full_name="aea.fetchai.signing.SigningMessage.Error_Performative.error_code", index=0, number=1, type=11, @@ -504,20 +504,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1532, - serialized_end=1627, + serialized_start=1428, + serialized_end=1515, ) _SIGNINGMESSAGE = _descriptor.Descriptor( name="SigningMessage", - full_name="fetchai.aea.fetchai.signing.SigningMessage", + full_name="aea.fetchai.signing.SigningMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error", - full_name="fetchai.aea.fetchai.signing.SigningMessage.error", + full_name="aea.fetchai.signing.SigningMessage.error", index=0, number=5, type=11, @@ -535,7 +535,7 @@ ), _descriptor.FieldDescriptor( name="sign_message", - full_name="fetchai.aea.fetchai.signing.SigningMessage.sign_message", + full_name="aea.fetchai.signing.SigningMessage.sign_message", index=1, number=6, type=11, @@ -553,7 +553,7 @@ ), _descriptor.FieldDescriptor( name="sign_transaction", - full_name="fetchai.aea.fetchai.signing.SigningMessage.sign_transaction", + full_name="aea.fetchai.signing.SigningMessage.sign_transaction", index=2, number=7, type=11, @@ -571,7 +571,7 @@ ), _descriptor.FieldDescriptor( name="signed_message", - full_name="fetchai.aea.fetchai.signing.SigningMessage.signed_message", + full_name="aea.fetchai.signing.SigningMessage.signed_message", index=3, number=8, type=11, @@ -589,7 +589,7 @@ ), _descriptor.FieldDescriptor( name="signed_transaction", - full_name="fetchai.aea.fetchai.signing.SigningMessage.signed_transaction", + full_name="aea.fetchai.signing.SigningMessage.signed_transaction", index=4, number=9, type=11, @@ -628,14 +628,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.signing.SigningMessage.performative", + full_name="aea.fetchai.signing.SigningMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=47, - serialized_end=1643, + serialized_start=39, + serialized_end=1531, ) _SIGNINGMESSAGE_ERRORCODE.fields_by_name[ @@ -732,7 +732,7 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_ERRORCODE, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.ErrorCode) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.ErrorCode) ), ), RawMessage=_reflection.GeneratedProtocolMessageType( @@ -741,7 +741,7 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_RAWMESSAGE, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.RawMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.RawMessage) ), ), RawTransaction=_reflection.GeneratedProtocolMessageType( @@ -750,7 +750,7 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_RAWTRANSACTION, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.RawTransaction) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.RawTransaction) ), ), SignedMessage=_reflection.GeneratedProtocolMessageType( @@ -759,7 +759,7 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_SIGNEDMESSAGE, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.SignedMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.SignedMessage) ), ), SignedTransaction=_reflection.GeneratedProtocolMessageType( @@ -768,7 +768,7 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_SIGNEDTRANSACTION, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.SignedTransaction) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.SignedTransaction) ), ), Terms=_reflection.GeneratedProtocolMessageType( @@ -777,7 +777,7 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_TERMS, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Terms) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.Terms) ), ), Sign_Transaction_Performative=_reflection.GeneratedProtocolMessageType( @@ -786,7 +786,7 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_SIGN_TRANSACTION_PERFORMATIVE, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.Sign_Transaction_Performative) ), ), Sign_Message_Performative=_reflection.GeneratedProtocolMessageType( @@ -795,7 +795,7 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_SIGN_MESSAGE_PERFORMATIVE, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Sign_Message_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.Sign_Message_Performative) ), ), Signed_Transaction_Performative=_reflection.GeneratedProtocolMessageType( @@ -804,7 +804,7 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_SIGNED_TRANSACTION_PERFORMATIVE, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Signed_Transaction_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.Signed_Transaction_Performative) ), ), Signed_Message_Performative=_reflection.GeneratedProtocolMessageType( @@ -813,7 +813,7 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_SIGNED_MESSAGE_PERFORMATIVE, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Signed_Message_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.Signed_Message_Performative) ), ), Error_Performative=_reflection.GeneratedProtocolMessageType( @@ -822,12 +822,12 @@ dict( DESCRIPTOR=_SIGNINGMESSAGE_ERROR_PERFORMATIVE, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage.Error_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage.Error_Performative) ), ), DESCRIPTOR=_SIGNINGMESSAGE, __module__="signing_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.signing.SigningMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.signing.SigningMessage) ), ) _sym_db.RegisterMessage(SigningMessage) diff --git a/aea/protocols/state_update/protocol.yaml b/aea/protocols/state_update/protocol.yaml index 7da5c8f6e2..d6858c75bb 100644 --- a/aea/protocols/state_update/protocol.yaml +++ b/aea/protocols/state_update/protocol.yaml @@ -11,8 +11,8 @@ fingerprint: dialogues.py: Qmd59WgpFccLn1zhpLdwm3zDCmCsjSoQXVn6M7PgFwwkgR message.py: Qmc8mnCC1K7yb1CTY3t1RXbktmg54bZ3nXVqq1KQES8jJf serialization.py: QmS3Tesi18wvwoxjgC4iiqkdJUMAsYSiz8Vq6oHNzr3kxh - state_update.proto: QmWZmuScKgykqijC58nrGrHfd2vDUk1mroEpqGt6UPLjDa - state_update_pb2.py: QmfAy4RWUa3GwsCyEsXK6xJ2jJ2JhbTGRg4wCfrcvviBxS + state_update.proto: QmX1YJaiCeEdURVzu8qx5w2gq5gs2V9cy8dJ7jg79poQLs + state_update_pb2.py: QmUgSCEzb6gZZBBYyLqMXxZG2Awt8znjQXeHMuX7DDdTpE fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/aea/protocols/state_update/state_update.proto b/aea/protocols/state_update/state_update.proto index 272d3f22b1..496b5671ba 100644 --- a/aea/protocols/state_update/state_update.proto +++ b/aea/protocols/state_update/state_update.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.state_update; +package aea.fetchai.state_update; message StateUpdateMessage{ diff --git a/aea/protocols/state_update/state_update_pb2.py b/aea/protocols/state_update/state_update_pb2.py index ff4e0e426d..bf7ee7b2e0 100644 --- a/aea/protocols/state_update/state_update_pb2.py +++ b/aea/protocols/state_update/state_update_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="state_update.proto", - package="fetchai.aea.fetchai.state_update", + package="aea.fetchai.state_update", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\x12state_update.proto\x12 fetchai.aea.fetchai.state_update"\xb2\x0b\n\x12StateUpdateMessage\x12X\n\x05\x61pply\x18\x05 \x01(\x0b\x32G.fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_PerformativeH\x00\x12\x62\n\ninitialize\x18\x06 \x01(\x0b\x32L.fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_PerformativeH\x00\x1a\xc0\x06\n\x17Initialize_Performative\x12\x94\x01\n\x1e\x65xchange_params_by_currency_id\x18\x01 \x03(\x0b\x32l.fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry\x12\x8a\x01\n\x19utility_params_by_good_id\x18\x02 \x03(\x0b\x32g.fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry\x12\x83\x01\n\x15\x61mount_by_currency_id\x18\x03 \x03(\x0b\x32\x64.fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry\x12\x83\x01\n\x15quantities_by_good_id\x18\x04 \x03(\x0b\x32\x64.fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry\x1a\x41\n\x1f\x45xchangeParamsByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a<\n\x1aUtilityParamsByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x8a\x03\n\x12\x41pply_Performative\x12~\n\x15\x61mount_by_currency_id\x18\x01 \x03(\x0b\x32_.fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry\x12~\n\x15quantities_by_good_id\x18\x02 \x03(\x0b\x32_.fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' + '\n\x12state_update.proto\x12\x18\x61\x65\x61.fetchai.state_update"\xf0\n\n\x12StateUpdateMessage\x12P\n\x05\x61pply\x18\x05 \x01(\x0b\x32?.aea.fetchai.state_update.StateUpdateMessage.Apply_PerformativeH\x00\x12Z\n\ninitialize\x18\x06 \x01(\x0b\x32\x44.aea.fetchai.state_update.StateUpdateMessage.Initialize_PerformativeH\x00\x1a\x9e\x06\n\x17Initialize_Performative\x12\x8c\x01\n\x1e\x65xchange_params_by_currency_id\x18\x01 \x03(\x0b\x32\x64.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry\x12\x82\x01\n\x19utility_params_by_good_id\x18\x02 \x03(\x0b\x32_.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry\x12{\n\x15\x61mount_by_currency_id\x18\x03 \x03(\x0b\x32\\.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry\x12{\n\x15quantities_by_good_id\x18\x04 \x03(\x0b\x32\\.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry\x1a\x41\n\x1f\x45xchangeParamsByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a<\n\x1aUtilityParamsByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\xfa\x02\n\x12\x41pply_Performative\x12v\n\x15\x61mount_by_currency_id\x18\x01 \x03(\x0b\x32W.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry\x12v\n\x15quantities_by_good_id\x18\x02 \x03(\x0b\x32W.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' ), ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY = _descriptor.Descriptor( name="ExchangeParamsByCurrencyIdEntry", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry.key", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry.key", index=0, number=1, type=9, @@ -52,7 +52,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry.value", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry.value", index=1, number=2, type=2, @@ -77,20 +77,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=857, - serialized_end=922, + serialized_start=799, + serialized_end=864, ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY = _descriptor.Descriptor( name="UtilityParamsByGoodIdEntry", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry.key", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry.key", index=0, number=1, type=9, @@ -108,7 +108,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry.value", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry.value", index=1, number=2, type=2, @@ -133,20 +133,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=924, - serialized_end=984, + serialized_start=866, + serialized_end=926, ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _descriptor.Descriptor( name="AmountByCurrencyIdEntry", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry.key", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry.key", index=0, number=1, type=9, @@ -164,7 +164,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry.value", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -189,20 +189,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=986, - serialized_end=1043, + serialized_start=928, + serialized_end=985, ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _descriptor.Descriptor( name="QuantitiesByGoodIdEntry", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry.key", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry.key", index=0, number=1, type=9, @@ -220,7 +220,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry.value", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry.value", index=1, number=2, type=5, @@ -245,20 +245,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1045, - serialized_end=1102, + serialized_start=987, + serialized_end=1044, ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE = _descriptor.Descriptor( name="Initialize_Performative", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="exchange_params_by_currency_id", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.exchange_params_by_currency_id", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.exchange_params_by_currency_id", index=0, number=1, type=11, @@ -276,7 +276,7 @@ ), _descriptor.FieldDescriptor( name="utility_params_by_good_id", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.utility_params_by_good_id", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.utility_params_by_good_id", index=1, number=2, type=11, @@ -294,7 +294,7 @@ ), _descriptor.FieldDescriptor( name="amount_by_currency_id", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.amount_by_currency_id", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.amount_by_currency_id", index=2, number=3, type=11, @@ -312,7 +312,7 @@ ), _descriptor.FieldDescriptor( name="quantities_by_good_id", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.quantities_by_good_id", + full_name="aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.quantities_by_good_id", index=3, number=4, type=11, @@ -342,20 +342,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=270, - serialized_end=1102, + serialized_start=246, + serialized_end=1044, ) _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _descriptor.Descriptor( name="AmountByCurrencyIdEntry", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry", + full_name="aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry.key", + full_name="aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry.key", index=0, number=1, type=9, @@ -373,7 +373,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry.value", + full_name="aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -398,20 +398,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=986, - serialized_end=1043, + serialized_start=928, + serialized_end=985, ) _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _descriptor.Descriptor( name="QuantitiesByGoodIdEntry", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry", + full_name="aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry.key", + full_name="aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry.key", index=0, number=1, type=9, @@ -429,7 +429,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry.value", + full_name="aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry.value", index=1, number=2, type=5, @@ -454,20 +454,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1045, - serialized_end=1102, + serialized_start=987, + serialized_end=1044, ) _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE = _descriptor.Descriptor( name="Apply_Performative", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative", + full_name="aea.fetchai.state_update.StateUpdateMessage.Apply_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="amount_by_currency_id", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.amount_by_currency_id", + full_name="aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.amount_by_currency_id", index=0, number=1, type=11, @@ -485,7 +485,7 @@ ), _descriptor.FieldDescriptor( name="quantities_by_good_id", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.quantities_by_good_id", + full_name="aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.quantities_by_good_id", index=1, number=2, type=11, @@ -513,20 +513,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1105, - serialized_end=1499, + serialized_start=1047, + serialized_end=1425, ) _STATEUPDATEMESSAGE = _descriptor.Descriptor( name="StateUpdateMessage", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage", + full_name="aea.fetchai.state_update.StateUpdateMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="apply", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.apply", + full_name="aea.fetchai.state_update.StateUpdateMessage.apply", index=0, number=5, type=11, @@ -544,7 +544,7 @@ ), _descriptor.FieldDescriptor( name="initialize", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.initialize", + full_name="aea.fetchai.state_update.StateUpdateMessage.initialize", index=1, number=6, type=11, @@ -574,14 +574,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.state_update.StateUpdateMessage.performative", + full_name="aea.fetchai.state_update.StateUpdateMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=57, - serialized_end=1515, + serialized_start=49, + serialized_end=1441, ) _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY.containing_type = ( @@ -659,7 +659,7 @@ dict( DESCRIPTOR=_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY, __module__="state_update_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.ExchangeParamsByCurrencyIdEntry) ), ), UtilityParamsByGoodIdEntry=_reflection.GeneratedProtocolMessageType( @@ -668,7 +668,7 @@ dict( DESCRIPTOR=_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY, __module__="state_update_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.UtilityParamsByGoodIdEntry) ), ), AmountByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( @@ -677,7 +677,7 @@ dict( DESCRIPTOR=_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, __module__="state_update_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.AmountByCurrencyIdEntry) ), ), QuantitiesByGoodIdEntry=_reflection.GeneratedProtocolMessageType( @@ -686,12 +686,12 @@ dict( DESCRIPTOR=_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, __module__="state_update_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative.QuantitiesByGoodIdEntry) ), ), DESCRIPTOR=_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE, __module__="state_update_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.state_update.StateUpdateMessage.Initialize_Performative) ), ), Apply_Performative=_reflection.GeneratedProtocolMessageType( @@ -704,7 +704,7 @@ dict( DESCRIPTOR=_STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, __module__="state_update_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.AmountByCurrencyIdEntry) ), ), QuantitiesByGoodIdEntry=_reflection.GeneratedProtocolMessageType( @@ -713,17 +713,17 @@ dict( DESCRIPTOR=_STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, __module__="state_update_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.state_update.StateUpdateMessage.Apply_Performative.QuantitiesByGoodIdEntry) ), ), DESCRIPTOR=_STATEUPDATEMESSAGE_APPLY_PERFORMATIVE, __module__="state_update_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage.Apply_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.state_update.StateUpdateMessage.Apply_Performative) ), ), DESCRIPTOR=_STATEUPDATEMESSAGE, __module__="state_update_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.state_update.StateUpdateMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.state_update.StateUpdateMessage) ), ) _sym_db.RegisterMessage(StateUpdateMessage) diff --git a/packages/fetchai/protocols/contract_api/contract_api.proto b/packages/fetchai/protocols/contract_api/contract_api.proto index f9047445ce..50c185a574 100644 --- a/packages/fetchai/protocols/contract_api/contract_api.proto +++ b/packages/fetchai/protocols/contract_api/contract_api.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.contract_api; +package aea.fetchai.contract_api; message ContractApiMessage{ diff --git a/packages/fetchai/protocols/contract_api/contract_api_pb2.py b/packages/fetchai/protocols/contract_api/contract_api_pb2.py index 429dcc3ed7..0160b17061 100644 --- a/packages/fetchai/protocols/contract_api/contract_api_pb2.py +++ b/packages/fetchai/protocols/contract_api/contract_api_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="contract_api.proto", - package="fetchai.aea.fetchai.contract_api", + package="aea.fetchai.contract_api", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\x12\x63ontract_api.proto\x12 fetchai.aea.fetchai.contract_api"\xa2\x11\n\x12\x43ontractApiMessage\x12X\n\x05\x65rror\x18\x05 \x01(\x0b\x32G.fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_PerformativeH\x00\x12z\n\x16get_deploy_transaction\x18\x06 \x01(\x0b\x32X.fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_PerformativeH\x00\x12l\n\x0fget_raw_message\x18\x07 \x01(\x0b\x32Q.fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_PerformativeH\x00\x12t\n\x13get_raw_transaction\x18\x08 \x01(\x0b\x32U.fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_PerformativeH\x00\x12`\n\tget_state\x18\t \x01(\x0b\x32K.fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_PerformativeH\x00\x12\x64\n\x0braw_message\x18\n \x01(\x0b\x32M.fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Message_PerformativeH\x00\x12l\n\x0fraw_transaction\x18\x0b \x01(\x0b\x32Q.fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_PerformativeH\x00\x12X\n\x05state\x18\x0c \x01(\x0b\x32G.fetchai.aea.fetchai.contract_api.ContractApiMessage.State_PerformativeH\x00\x1a\x18\n\x06Kwargs\x12\x0e\n\x06kwargs\x18\x01 \x01(\x0c\x1a!\n\nRawMessage\x12\x13\n\x0braw_message\x18\x01 \x01(\x0c\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05State\x12\r\n\x05state\x18\x01 \x01(\x0c\x1a\xac\x01\n#Get_Deploy_Transaction_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x03 \x01(\t\x12K\n\x06kwargs\x18\x04 \x01(\x0b\x32;.fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a\xc3\x01\n Get_Raw_Transaction_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12K\n\x06kwargs\x18\x05 \x01(\x0b\x32;.fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a\xbf\x01\n\x1cGet_Raw_Message_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12K\n\x06kwargs\x18\x05 \x01(\x0b\x32;.fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a\xb9\x01\n\x16Get_State_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12K\n\x06kwargs\x18\x05 \x01(\x0b\x32;.fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a_\n\x12State_Performative\x12I\n\x05state\x18\x01 \x01(\x0b\x32:.fetchai.aea.fetchai.contract_api.ContractApiMessage.State\x1a|\n\x1cRaw_Transaction_Performative\x12\\\n\x0fraw_transaction\x18\x01 \x01(\x0b\x32\x43.fetchai.aea.fetchai.contract_api.ContractApiMessage.RawTransaction\x1ap\n\x18Raw_Message_Performative\x12T\n\x0braw_message\x18\x01 \x01(\x0b\x32?.fetchai.aea.fetchai.contract_api.ContractApiMessage.RawMessage\x1an\n\x12\x45rror_Performative\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x13\n\x0b\x63ode_is_set\x18\x02 \x01(\x08\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x16\n\x0emessage_is_set\x18\x04 \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3' + '\n\x12\x63ontract_api.proto\x12\x18\x61\x65\x61.fetchai.contract_api"\xaa\x10\n\x12\x43ontractApiMessage\x12P\n\x05\x65rror\x18\x05 \x01(\x0b\x32?.aea.fetchai.contract_api.ContractApiMessage.Error_PerformativeH\x00\x12r\n\x16get_deploy_transaction\x18\x06 \x01(\x0b\x32P.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_PerformativeH\x00\x12\x64\n\x0fget_raw_message\x18\x07 \x01(\x0b\x32I.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_PerformativeH\x00\x12l\n\x13get_raw_transaction\x18\x08 \x01(\x0b\x32M.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_PerformativeH\x00\x12X\n\tget_state\x18\t \x01(\x0b\x32\x43.aea.fetchai.contract_api.ContractApiMessage.Get_State_PerformativeH\x00\x12\\\n\x0braw_message\x18\n \x01(\x0b\x32\x45.aea.fetchai.contract_api.ContractApiMessage.Raw_Message_PerformativeH\x00\x12\x64\n\x0fraw_transaction\x18\x0b \x01(\x0b\x32I.aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_PerformativeH\x00\x12P\n\x05state\x18\x0c \x01(\x0b\x32?.aea.fetchai.contract_api.ContractApiMessage.State_PerformativeH\x00\x1a\x18\n\x06Kwargs\x12\x0e\n\x06kwargs\x18\x01 \x01(\x0c\x1a!\n\nRawMessage\x12\x13\n\x0braw_message\x18\x01 \x01(\x0c\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05State\x12\r\n\x05state\x18\x01 \x01(\x0c\x1a\xa4\x01\n#Get_Deploy_Transaction_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x03 \x01(\t\x12\x43\n\x06kwargs\x18\x04 \x01(\x0b\x32\x33.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a\xbb\x01\n Get_Raw_Transaction_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12\x43\n\x06kwargs\x18\x05 \x01(\x0b\x32\x33.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a\xb7\x01\n\x1cGet_Raw_Message_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12\x43\n\x06kwargs\x18\x05 \x01(\x0b\x32\x33.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1a\xb1\x01\n\x16Get_State_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\t\x12\x18\n\x10\x63ontract_address\x18\x03 \x01(\t\x12\x10\n\x08\x63\x61llable\x18\x04 \x01(\t\x12\x43\n\x06kwargs\x18\x05 \x01(\x0b\x32\x33.aea.fetchai.contract_api.ContractApiMessage.Kwargs\x1aW\n\x12State_Performative\x12\x41\n\x05state\x18\x01 \x01(\x0b\x32\x32.aea.fetchai.contract_api.ContractApiMessage.State\x1at\n\x1cRaw_Transaction_Performative\x12T\n\x0fraw_transaction\x18\x01 \x01(\x0b\x32;.aea.fetchai.contract_api.ContractApiMessage.RawTransaction\x1ah\n\x18Raw_Message_Performative\x12L\n\x0braw_message\x18\x01 \x01(\x0b\x32\x37.aea.fetchai.contract_api.ContractApiMessage.RawMessage\x1an\n\x12\x45rror_Performative\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x13\n\x0b\x63ode_is_set\x18\x02 \x01(\x08\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x16\n\x0emessage_is_set\x18\x04 \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3' ), ) _CONTRACTAPIMESSAGE_KWARGS = _descriptor.Descriptor( name="Kwargs", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs", + full_name="aea.fetchai.contract_api.ContractApiMessage.Kwargs", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="kwargs", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs.kwargs", + full_name="aea.fetchai.contract_api.ContractApiMessage.Kwargs.kwargs", index=0, number=1, type=12, @@ -59,20 +59,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=921, - serialized_end=945, + serialized_start=849, + serialized_end=873, ) _CONTRACTAPIMESSAGE_RAWMESSAGE = _descriptor.Descriptor( name="RawMessage", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.RawMessage", + full_name="aea.fetchai.contract_api.ContractApiMessage.RawMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_message", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.RawMessage.raw_message", + full_name="aea.fetchai.contract_api.ContractApiMessage.RawMessage.raw_message", index=0, number=1, type=12, @@ -97,20 +97,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=947, - serialized_end=980, + serialized_start=875, + serialized_end=908, ) _CONTRACTAPIMESSAGE_RAWTRANSACTION = _descriptor.Descriptor( name="RawTransaction", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.RawTransaction", + full_name="aea.fetchai.contract_api.ContractApiMessage.RawTransaction", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.RawTransaction.raw_transaction", + full_name="aea.fetchai.contract_api.ContractApiMessage.RawTransaction.raw_transaction", index=0, number=1, type=12, @@ -135,20 +135,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=982, - serialized_end=1023, + serialized_start=910, + serialized_end=951, ) _CONTRACTAPIMESSAGE_STATE = _descriptor.Descriptor( name="State", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.State", + full_name="aea.fetchai.contract_api.ContractApiMessage.State", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="state", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.State.state", + full_name="aea.fetchai.contract_api.ContractApiMessage.State.state", index=0, number=1, type=12, @@ -173,20 +173,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1025, - serialized_end=1047, + serialized_start=953, + serialized_end=975, ) _CONTRACTAPIMESSAGE_GET_DEPLOY_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Get_Deploy_Transaction_Performative", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.ledger_id", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.ledger_id", index=0, number=1, type=9, @@ -204,7 +204,7 @@ ), _descriptor.FieldDescriptor( name="contract_id", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.contract_id", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.contract_id", index=1, number=2, type=9, @@ -222,7 +222,7 @@ ), _descriptor.FieldDescriptor( name="callable", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.callable", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.callable", index=2, number=3, type=9, @@ -240,7 +240,7 @@ ), _descriptor.FieldDescriptor( name="kwargs", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.kwargs", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative.kwargs", index=3, number=4, type=11, @@ -265,20 +265,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1050, - serialized_end=1222, + serialized_start=978, + serialized_end=1142, ) _CONTRACTAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Get_Raw_Transaction_Performative", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.ledger_id", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.ledger_id", index=0, number=1, type=9, @@ -296,7 +296,7 @@ ), _descriptor.FieldDescriptor( name="contract_id", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.contract_id", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.contract_id", index=1, number=2, type=9, @@ -314,7 +314,7 @@ ), _descriptor.FieldDescriptor( name="contract_address", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.contract_address", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.contract_address", index=2, number=3, type=9, @@ -332,7 +332,7 @@ ), _descriptor.FieldDescriptor( name="callable", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.callable", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.callable", index=3, number=4, type=9, @@ -350,7 +350,7 @@ ), _descriptor.FieldDescriptor( name="kwargs", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.kwargs", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative.kwargs", index=4, number=5, type=11, @@ -375,20 +375,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1225, - serialized_end=1420, + serialized_start=1145, + serialized_end=1332, ) _CONTRACTAPIMESSAGE_GET_RAW_MESSAGE_PERFORMATIVE = _descriptor.Descriptor( name="Get_Raw_Message_Performative", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.ledger_id", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.ledger_id", index=0, number=1, type=9, @@ -406,7 +406,7 @@ ), _descriptor.FieldDescriptor( name="contract_id", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.contract_id", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.contract_id", index=1, number=2, type=9, @@ -424,7 +424,7 @@ ), _descriptor.FieldDescriptor( name="contract_address", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.contract_address", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.contract_address", index=2, number=3, type=9, @@ -442,7 +442,7 @@ ), _descriptor.FieldDescriptor( name="callable", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.callable", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.callable", index=3, number=4, type=9, @@ -460,7 +460,7 @@ ), _descriptor.FieldDescriptor( name="kwargs", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.kwargs", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative.kwargs", index=4, number=5, type=11, @@ -485,20 +485,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1423, - serialized_end=1614, + serialized_start=1335, + serialized_end=1518, ) _CONTRACTAPIMESSAGE_GET_STATE_PERFORMATIVE = _descriptor.Descriptor( name="Get_State_Performative", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.ledger_id", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.ledger_id", index=0, number=1, type=9, @@ -516,7 +516,7 @@ ), _descriptor.FieldDescriptor( name="contract_id", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.contract_id", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.contract_id", index=1, number=2, type=9, @@ -534,7 +534,7 @@ ), _descriptor.FieldDescriptor( name="contract_address", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.contract_address", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.contract_address", index=2, number=3, type=9, @@ -552,7 +552,7 @@ ), _descriptor.FieldDescriptor( name="callable", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.callable", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.callable", index=3, number=4, type=9, @@ -570,7 +570,7 @@ ), _descriptor.FieldDescriptor( name="kwargs", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.kwargs", + full_name="aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative.kwargs", index=4, number=5, type=11, @@ -595,20 +595,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1617, - serialized_end=1802, + serialized_start=1521, + serialized_end=1698, ) _CONTRACTAPIMESSAGE_STATE_PERFORMATIVE = _descriptor.Descriptor( name="State_Performative", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.State_Performative", + full_name="aea.fetchai.contract_api.ContractApiMessage.State_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="state", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.State_Performative.state", + full_name="aea.fetchai.contract_api.ContractApiMessage.State_Performative.state", index=0, number=1, type=11, @@ -633,20 +633,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1804, - serialized_end=1899, + serialized_start=1700, + serialized_end=1787, ) _CONTRACTAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Raw_Transaction_Performative", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_Performative", + full_name="aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_Performative.raw_transaction", + full_name="aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_Performative.raw_transaction", index=0, number=1, type=11, @@ -671,20 +671,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1901, - serialized_end=2025, + serialized_start=1789, + serialized_end=1905, ) _CONTRACTAPIMESSAGE_RAW_MESSAGE_PERFORMATIVE = _descriptor.Descriptor( name="Raw_Message_Performative", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Message_Performative", + full_name="aea.fetchai.contract_api.ContractApiMessage.Raw_Message_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_message", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Message_Performative.raw_message", + full_name="aea.fetchai.contract_api.ContractApiMessage.Raw_Message_Performative.raw_message", index=0, number=1, type=11, @@ -709,20 +709,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=2027, - serialized_end=2139, + serialized_start=1907, + serialized_end=2011, ) _CONTRACTAPIMESSAGE_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Error_Performative", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative", + full_name="aea.fetchai.contract_api.ContractApiMessage.Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="code", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative.code", + full_name="aea.fetchai.contract_api.ContractApiMessage.Error_Performative.code", index=0, number=1, type=5, @@ -740,7 +740,7 @@ ), _descriptor.FieldDescriptor( name="code_is_set", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative.code_is_set", + full_name="aea.fetchai.contract_api.ContractApiMessage.Error_Performative.code_is_set", index=1, number=2, type=8, @@ -758,7 +758,7 @@ ), _descriptor.FieldDescriptor( name="message", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative.message", + full_name="aea.fetchai.contract_api.ContractApiMessage.Error_Performative.message", index=2, number=3, type=9, @@ -776,7 +776,7 @@ ), _descriptor.FieldDescriptor( name="message_is_set", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative.message_is_set", + full_name="aea.fetchai.contract_api.ContractApiMessage.Error_Performative.message_is_set", index=3, number=4, type=8, @@ -794,7 +794,7 @@ ), _descriptor.FieldDescriptor( name="data", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative.data", + full_name="aea.fetchai.contract_api.ContractApiMessage.Error_Performative.data", index=4, number=5, type=12, @@ -819,20 +819,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=2141, - serialized_end=2251, + serialized_start=2013, + serialized_end=2123, ) _CONTRACTAPIMESSAGE = _descriptor.Descriptor( name="ContractApiMessage", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage", + full_name="aea.fetchai.contract_api.ContractApiMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.error", + full_name="aea.fetchai.contract_api.ContractApiMessage.error", index=0, number=5, type=11, @@ -850,7 +850,7 @@ ), _descriptor.FieldDescriptor( name="get_deploy_transaction", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.get_deploy_transaction", + full_name="aea.fetchai.contract_api.ContractApiMessage.get_deploy_transaction", index=1, number=6, type=11, @@ -868,7 +868,7 @@ ), _descriptor.FieldDescriptor( name="get_raw_message", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.get_raw_message", + full_name="aea.fetchai.contract_api.ContractApiMessage.get_raw_message", index=2, number=7, type=11, @@ -886,7 +886,7 @@ ), _descriptor.FieldDescriptor( name="get_raw_transaction", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.get_raw_transaction", + full_name="aea.fetchai.contract_api.ContractApiMessage.get_raw_transaction", index=3, number=8, type=11, @@ -904,7 +904,7 @@ ), _descriptor.FieldDescriptor( name="get_state", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.get_state", + full_name="aea.fetchai.contract_api.ContractApiMessage.get_state", index=4, number=9, type=11, @@ -922,7 +922,7 @@ ), _descriptor.FieldDescriptor( name="raw_message", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.raw_message", + full_name="aea.fetchai.contract_api.ContractApiMessage.raw_message", index=5, number=10, type=11, @@ -940,7 +940,7 @@ ), _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.raw_transaction", + full_name="aea.fetchai.contract_api.ContractApiMessage.raw_transaction", index=6, number=11, type=11, @@ -958,7 +958,7 @@ ), _descriptor.FieldDescriptor( name="state", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.state", + full_name="aea.fetchai.contract_api.ContractApiMessage.state", index=7, number=12, type=11, @@ -998,14 +998,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.contract_api.ContractApiMessage.performative", + full_name="aea.fetchai.contract_api.ContractApiMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=57, - serialized_end=2267, + serialized_start=49, + serialized_end=2139, ) _CONTRACTAPIMESSAGE_KWARGS.containing_type = _CONTRACTAPIMESSAGE @@ -1130,7 +1130,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_KWARGS, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Kwargs) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.Kwargs) ), ), RawMessage=_reflection.GeneratedProtocolMessageType( @@ -1139,7 +1139,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_RAWMESSAGE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.RawMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.RawMessage) ), ), RawTransaction=_reflection.GeneratedProtocolMessageType( @@ -1148,7 +1148,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_RAWTRANSACTION, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.RawTransaction) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.RawTransaction) ), ), State=_reflection.GeneratedProtocolMessageType( @@ -1157,7 +1157,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_STATE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.State) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.State) ), ), Get_Deploy_Transaction_Performative=_reflection.GeneratedProtocolMessageType( @@ -1166,7 +1166,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_GET_DEPLOY_TRANSACTION_PERFORMATIVE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.Get_Deploy_Transaction_Performative) ), ), Get_Raw_Transaction_Performative=_reflection.GeneratedProtocolMessageType( @@ -1175,7 +1175,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Transaction_Performative) ), ), Get_Raw_Message_Performative=_reflection.GeneratedProtocolMessageType( @@ -1184,7 +1184,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_GET_RAW_MESSAGE_PERFORMATIVE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.Get_Raw_Message_Performative) ), ), Get_State_Performative=_reflection.GeneratedProtocolMessageType( @@ -1193,7 +1193,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_GET_STATE_PERFORMATIVE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.Get_State_Performative) ), ), State_Performative=_reflection.GeneratedProtocolMessageType( @@ -1202,7 +1202,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_STATE_PERFORMATIVE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.State_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.State_Performative) ), ), Raw_Transaction_Performative=_reflection.GeneratedProtocolMessageType( @@ -1211,7 +1211,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.Raw_Transaction_Performative) ), ), Raw_Message_Performative=_reflection.GeneratedProtocolMessageType( @@ -1220,7 +1220,7 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_RAW_MESSAGE_PERFORMATIVE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Raw_Message_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.Raw_Message_Performative) ), ), Error_Performative=_reflection.GeneratedProtocolMessageType( @@ -1229,12 +1229,12 @@ dict( DESCRIPTOR=_CONTRACTAPIMESSAGE_ERROR_PERFORMATIVE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage.Error_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage.Error_Performative) ), ), DESCRIPTOR=_CONTRACTAPIMESSAGE, __module__="contract_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.contract_api.ContractApiMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.contract_api.ContractApiMessage) ), ) _sym_db.RegisterMessage(ContractApiMessage) diff --git a/packages/fetchai/protocols/contract_api/protocol.yaml b/packages/fetchai/protocols/contract_api/protocol.yaml index dfb9fb6ccd..24e537bdb5 100644 --- a/packages/fetchai/protocols/contract_api/protocol.yaml +++ b/packages/fetchai/protocols/contract_api/protocol.yaml @@ -8,8 +8,8 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmZv8BvQ1EqbbsF2QjgwSuAv1EDra5bAZzpSWrztm5Gn1s __init__.py: QmZodYjNqoMgGAGKfkCU4zU9t1Cx9MAownqSy4wyVdwaHF - contract_api.proto: QmNMLYVPSUYhA8Aao92Rytk7Ftfc3JVXHCx1b28jXnJUds - contract_api_pb2.py: QmYUwtxum9CTZheibHguakuGYJCcZcu9Cphy9EwWXQBN2x + contract_api.proto: QmSZpXyFMf2MNgVud8iPinaaerx1CManffgHNMx8FcD8jY + contract_api_pb2.py: QmeFTJRKNypwVgAs1h97aMr36xE3hjD8Vhqwo5Pf4dtjTy custom_types.py: Qmd86SMkJeASh8xvpNV9GTq1rGKs7Qjbj97UfbENEbd5AM dialogues.py: QmTjXH8JUtziUFDawKsSTYE5dxn1n1FmMPeWexyxiPYd6k message.py: QmfVtxSae81BNSmhcd5qTH6o8BMaRjtYAqfG6sCAH7m1Cu diff --git a/packages/fetchai/protocols/fipa/fipa.proto b/packages/fetchai/protocols/fipa/fipa.proto index e5c7d985d3..97ccb3301c 100644 --- a/packages/fetchai/protocols/fipa/fipa.proto +++ b/packages/fetchai/protocols/fipa/fipa.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.fipa; +package aea.fetchai.fipa; message FipaMessage{ diff --git a/packages/fetchai/protocols/fipa/fipa_pb2.py b/packages/fetchai/protocols/fipa/fipa_pb2.py index ba5ed0d17c..932e3308f2 100644 --- a/packages/fetchai/protocols/fipa/fipa_pb2.py +++ b/packages/fetchai/protocols/fipa/fipa_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="fipa.proto", - package="fetchai.aea.fetchai.fipa", + package="aea.fetchai.fipa", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\nfipa.proto\x12\x18\x66\x65tchai.aea.fetchai.fipa"\xe2\x0c\n\x0b\x46ipaMessage\x12K\n\x06\x61\x63\x63\x65pt\x18\x05 \x01(\x0b\x32\x39.fetchai.aea.fetchai.fipa.FipaMessage.Accept_PerformativeH\x00\x12]\n\x0f\x61\x63\x63\x65pt_w_inform\x18\x06 \x01(\x0b\x32\x42.fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_PerformativeH\x00\x12\x45\n\x03\x63\x66p\x18\x07 \x01(\x0b\x32\x36.fetchai.aea.fetchai.fipa.FipaMessage.Cfp_PerformativeH\x00\x12M\n\x07\x64\x65\x63line\x18\x08 \x01(\x0b\x32:.fetchai.aea.fetchai.fipa.FipaMessage.Decline_PerformativeH\x00\x12K\n\x06inform\x18\t \x01(\x0b\x32\x39.fetchai.aea.fetchai.fipa.FipaMessage.Inform_PerformativeH\x00\x12W\n\x0cmatch_accept\x18\n \x01(\x0b\x32?.fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_PerformativeH\x00\x12i\n\x15match_accept_w_inform\x18\x0b \x01(\x0b\x32H.fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_PerformativeH\x00\x12M\n\x07propose\x18\x0c \x01(\x0b\x32:.fetchai.aea.fetchai.fipa.FipaMessage.Propose_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\x8b\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12\x46\n\x07nothing\x18\x02 \x01(\x0b\x32\x33.fetchai.aea.fetchai.fipa.FipaMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1aN\n\x10\x43\x66p_Performative\x12:\n\x05query\x18\x01 \x01(\x0b\x32+.fetchai.aea.fetchai.fipa.FipaMessage.Query\x1a[\n\x14Propose_Performative\x12\x43\n\x08proposal\x18\x01 \x01(\x0b\x32\x31.fetchai.aea.fetchai.fipa.FipaMessage.Description\x1a\xa7\x01\n\x1c\x41\x63\x63\x65pt_W_Inform_Performative\x12Z\n\x04info\x18\x01 \x03(\x0b\x32L.fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xb3\x01\n"Match_Accept_W_Inform_Performative\x12`\n\x04info\x18\x01 \x03(\x0b\x32R.fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x95\x01\n\x13Inform_Performative\x12Q\n\x04info\x18\x01 \x03(\x0b\x32\x43.fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x15\n\x13\x41\x63\x63\x65pt_Performative\x1a\x16\n\x14\x44\x65\x63line_Performative\x1a\x1b\n\x19Match_Accept_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + '\n\nfipa.proto\x12\x10\x61\x65\x61.fetchai.fipa"\xf2\x0b\n\x0b\x46ipaMessage\x12\x43\n\x06\x61\x63\x63\x65pt\x18\x05 \x01(\x0b\x32\x31.aea.fetchai.fipa.FipaMessage.Accept_PerformativeH\x00\x12U\n\x0f\x61\x63\x63\x65pt_w_inform\x18\x06 \x01(\x0b\x32:.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_PerformativeH\x00\x12=\n\x03\x63\x66p\x18\x07 \x01(\x0b\x32..aea.fetchai.fipa.FipaMessage.Cfp_PerformativeH\x00\x12\x45\n\x07\x64\x65\x63line\x18\x08 \x01(\x0b\x32\x32.aea.fetchai.fipa.FipaMessage.Decline_PerformativeH\x00\x12\x43\n\x06inform\x18\t \x01(\x0b\x32\x31.aea.fetchai.fipa.FipaMessage.Inform_PerformativeH\x00\x12O\n\x0cmatch_accept\x18\n \x01(\x0b\x32\x37.aea.fetchai.fipa.FipaMessage.Match_Accept_PerformativeH\x00\x12\x61\n\x15match_accept_w_inform\x18\x0b \x01(\x0b\x32@.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_PerformativeH\x00\x12\x45\n\x07propose\x18\x0c \x01(\x0b\x32\x32.aea.fetchai.fipa.FipaMessage.Propose_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\x83\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12>\n\x07nothing\x18\x02 \x01(\x0b\x32+.aea.fetchai.fipa.FipaMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1a\x46\n\x10\x43\x66p_Performative\x12\x32\n\x05query\x18\x01 \x01(\x0b\x32#.aea.fetchai.fipa.FipaMessage.Query\x1aS\n\x14Propose_Performative\x12;\n\x08proposal\x18\x01 \x01(\x0b\x32).aea.fetchai.fipa.FipaMessage.Description\x1a\x9f\x01\n\x1c\x41\x63\x63\x65pt_W_Inform_Performative\x12R\n\x04info\x18\x01 \x03(\x0b\x32\x44.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xab\x01\n"Match_Accept_W_Inform_Performative\x12X\n\x04info\x18\x01 \x03(\x0b\x32J.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x8d\x01\n\x13Inform_Performative\x12I\n\x04info\x18\x01 \x03(\x0b\x32;.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x15\n\x13\x41\x63\x63\x65pt_Performative\x1a\x16\n\x14\x44\x65\x63line_Performative\x1a\x1b\n\x19Match_Accept_PerformativeB\x0e\n\x0cperformativeb\x06proto3' ), ) _FIPAMESSAGE_DESCRIPTION = _descriptor.Descriptor( name="Description", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Description", + full_name="aea.fetchai.fipa.FipaMessage.Description", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="description", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Description.description", + full_name="aea.fetchai.fipa.FipaMessage.Description.description", index=0, number=1, type=12, @@ -59,13 +59,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=730, - serialized_end=764, + serialized_start=658, + serialized_end=692, ) _FIPAMESSAGE_QUERY_NOTHING = _descriptor.Descriptor( name="Nothing", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query.Nothing", + full_name="aea.fetchai.fipa.FipaMessage.Query.Nothing", filename=None, file=DESCRIPTOR, containing_type=None, @@ -78,20 +78,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=888, - serialized_end=897, + serialized_start=808, + serialized_end=817, ) _FIPAMESSAGE_QUERY = _descriptor.Descriptor( name="Query", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query", + full_name="aea.fetchai.fipa.FipaMessage.Query", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="bytes", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query.bytes", + full_name="aea.fetchai.fipa.FipaMessage.Query.bytes", index=0, number=1, type=12, @@ -109,7 +109,7 @@ ), _descriptor.FieldDescriptor( name="nothing", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query.nothing", + full_name="aea.fetchai.fipa.FipaMessage.Query.nothing", index=1, number=2, type=11, @@ -127,7 +127,7 @@ ), _descriptor.FieldDescriptor( name="query_bytes", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query.query_bytes", + full_name="aea.fetchai.fipa.FipaMessage.Query.query_bytes", index=2, number=3, type=12, @@ -154,26 +154,26 @@ oneofs=[ _descriptor.OneofDescriptor( name="query", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Query.query", + full_name="aea.fetchai.fipa.FipaMessage.Query.query", index=0, containing_type=None, fields=[], ), ], - serialized_start=767, - serialized_end=906, + serialized_start=695, + serialized_end=826, ) _FIPAMESSAGE_CFP_PERFORMATIVE = _descriptor.Descriptor( name="Cfp_Performative", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Cfp_Performative", + full_name="aea.fetchai.fipa.FipaMessage.Cfp_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="query", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Cfp_Performative.query", + full_name="aea.fetchai.fipa.FipaMessage.Cfp_Performative.query", index=0, number=1, type=11, @@ -198,20 +198,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=908, - serialized_end=986, + serialized_start=828, + serialized_end=898, ) _FIPAMESSAGE_PROPOSE_PERFORMATIVE = _descriptor.Descriptor( name="Propose_Performative", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Propose_Performative", + full_name="aea.fetchai.fipa.FipaMessage.Propose_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="proposal", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Propose_Performative.proposal", + full_name="aea.fetchai.fipa.FipaMessage.Propose_Performative.proposal", index=0, number=1, type=11, @@ -236,20 +236,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=988, - serialized_end=1079, + serialized_start=900, + serialized_end=983, ) _FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY = _descriptor.Descriptor( name="InfoEntry", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry", + full_name="aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry.key", + full_name="aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry.key", index=0, number=1, type=9, @@ -267,7 +267,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry.value", + full_name="aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry.value", index=1, number=2, type=9, @@ -292,20 +292,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1206, - serialized_end=1249, + serialized_start=1102, + serialized_end=1145, ) _FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE = _descriptor.Descriptor( name="Accept_W_Inform_Performative", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative", + full_name="aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="info", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.info", + full_name="aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.info", index=0, number=1, type=11, @@ -330,20 +330,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1082, - serialized_end=1249, + serialized_start=986, + serialized_end=1145, ) _FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY = _descriptor.Descriptor( name="InfoEntry", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry", + full_name="aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry.key", + full_name="aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry.key", index=0, number=1, type=9, @@ -361,7 +361,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry.value", + full_name="aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry.value", index=1, number=2, type=9, @@ -386,20 +386,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1206, - serialized_end=1249, + serialized_start=1102, + serialized_end=1145, ) _FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE = _descriptor.Descriptor( name="Match_Accept_W_Inform_Performative", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative", + full_name="aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="info", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.info", + full_name="aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.info", index=0, number=1, type=11, @@ -424,20 +424,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1252, - serialized_end=1431, + serialized_start=1148, + serialized_end=1319, ) _FIPAMESSAGE_INFORM_PERFORMATIVE_INFOENTRY = _descriptor.Descriptor( name="InfoEntry", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry", + full_name="aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry.key", + full_name="aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry.key", index=0, number=1, type=9, @@ -455,7 +455,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry.value", + full_name="aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry.value", index=1, number=2, type=9, @@ -480,20 +480,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1206, - serialized_end=1249, + serialized_start=1102, + serialized_end=1145, ) _FIPAMESSAGE_INFORM_PERFORMATIVE = _descriptor.Descriptor( name="Inform_Performative", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative", + full_name="aea.fetchai.fipa.FipaMessage.Inform_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="info", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.info", + full_name="aea.fetchai.fipa.FipaMessage.Inform_Performative.info", index=0, number=1, type=11, @@ -518,13 +518,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1434, - serialized_end=1583, + serialized_start=1322, + serialized_end=1463, ) _FIPAMESSAGE_ACCEPT_PERFORMATIVE = _descriptor.Descriptor( name="Accept_Performative", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Accept_Performative", + full_name="aea.fetchai.fipa.FipaMessage.Accept_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -537,13 +537,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1585, - serialized_end=1606, + serialized_start=1465, + serialized_end=1486, ) _FIPAMESSAGE_DECLINE_PERFORMATIVE = _descriptor.Descriptor( name="Decline_Performative", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Decline_Performative", + full_name="aea.fetchai.fipa.FipaMessage.Decline_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -556,13 +556,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1608, - serialized_end=1630, + serialized_start=1488, + serialized_end=1510, ) _FIPAMESSAGE_MATCH_ACCEPT_PERFORMATIVE = _descriptor.Descriptor( name="Match_Accept_Performative", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_Performative", + full_name="aea.fetchai.fipa.FipaMessage.Match_Accept_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -575,20 +575,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1632, - serialized_end=1659, + serialized_start=1512, + serialized_end=1539, ) _FIPAMESSAGE = _descriptor.Descriptor( name="FipaMessage", - full_name="fetchai.aea.fetchai.fipa.FipaMessage", + full_name="aea.fetchai.fipa.FipaMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="accept", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.accept", + full_name="aea.fetchai.fipa.FipaMessage.accept", index=0, number=5, type=11, @@ -606,7 +606,7 @@ ), _descriptor.FieldDescriptor( name="accept_w_inform", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.accept_w_inform", + full_name="aea.fetchai.fipa.FipaMessage.accept_w_inform", index=1, number=6, type=11, @@ -624,7 +624,7 @@ ), _descriptor.FieldDescriptor( name="cfp", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.cfp", + full_name="aea.fetchai.fipa.FipaMessage.cfp", index=2, number=7, type=11, @@ -642,7 +642,7 @@ ), _descriptor.FieldDescriptor( name="decline", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.decline", + full_name="aea.fetchai.fipa.FipaMessage.decline", index=3, number=8, type=11, @@ -660,7 +660,7 @@ ), _descriptor.FieldDescriptor( name="inform", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.inform", + full_name="aea.fetchai.fipa.FipaMessage.inform", index=4, number=9, type=11, @@ -678,7 +678,7 @@ ), _descriptor.FieldDescriptor( name="match_accept", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.match_accept", + full_name="aea.fetchai.fipa.FipaMessage.match_accept", index=5, number=10, type=11, @@ -696,7 +696,7 @@ ), _descriptor.FieldDescriptor( name="match_accept_w_inform", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.match_accept_w_inform", + full_name="aea.fetchai.fipa.FipaMessage.match_accept_w_inform", index=6, number=11, type=11, @@ -714,7 +714,7 @@ ), _descriptor.FieldDescriptor( name="propose", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.propose", + full_name="aea.fetchai.fipa.FipaMessage.propose", index=7, number=12, type=11, @@ -752,14 +752,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.fipa.FipaMessage.performative", + full_name="aea.fetchai.fipa.FipaMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=41, - serialized_end=1675, + serialized_start=33, + serialized_end=1555, ) _FIPAMESSAGE_DESCRIPTION.containing_type = _FIPAMESSAGE @@ -889,7 +889,7 @@ dict( DESCRIPTOR=_FIPAMESSAGE_DESCRIPTION, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Description) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Description) ), ), Query=_reflection.GeneratedProtocolMessageType( @@ -902,12 +902,12 @@ dict( DESCRIPTOR=_FIPAMESSAGE_QUERY_NOTHING, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Query.Nothing) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Query.Nothing) ), ), DESCRIPTOR=_FIPAMESSAGE_QUERY, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Query) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Query) ), ), Cfp_Performative=_reflection.GeneratedProtocolMessageType( @@ -916,7 +916,7 @@ dict( DESCRIPTOR=_FIPAMESSAGE_CFP_PERFORMATIVE, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Cfp_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Cfp_Performative) ), ), Propose_Performative=_reflection.GeneratedProtocolMessageType( @@ -925,7 +925,7 @@ dict( DESCRIPTOR=_FIPAMESSAGE_PROPOSE_PERFORMATIVE, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Propose_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Propose_Performative) ), ), Accept_W_Inform_Performative=_reflection.GeneratedProtocolMessageType( @@ -938,12 +938,12 @@ dict( DESCRIPTOR=_FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative.InfoEntry) ), ), DESCRIPTOR=_FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Accept_W_Inform_Performative) ), ), Match_Accept_W_Inform_Performative=_reflection.GeneratedProtocolMessageType( @@ -956,12 +956,12 @@ dict( DESCRIPTOR=_FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative.InfoEntry) ), ), DESCRIPTOR=_FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Match_Accept_W_Inform_Performative) ), ), Inform_Performative=_reflection.GeneratedProtocolMessageType( @@ -974,12 +974,12 @@ dict( DESCRIPTOR=_FIPAMESSAGE_INFORM_PERFORMATIVE_INFOENTRY, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Inform_Performative.InfoEntry) ), ), DESCRIPTOR=_FIPAMESSAGE_INFORM_PERFORMATIVE, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Inform_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Inform_Performative) ), ), Accept_Performative=_reflection.GeneratedProtocolMessageType( @@ -988,7 +988,7 @@ dict( DESCRIPTOR=_FIPAMESSAGE_ACCEPT_PERFORMATIVE, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Accept_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Accept_Performative) ), ), Decline_Performative=_reflection.GeneratedProtocolMessageType( @@ -997,7 +997,7 @@ dict( DESCRIPTOR=_FIPAMESSAGE_DECLINE_PERFORMATIVE, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Decline_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Decline_Performative) ), ), Match_Accept_Performative=_reflection.GeneratedProtocolMessageType( @@ -1006,12 +1006,12 @@ dict( DESCRIPTOR=_FIPAMESSAGE_MATCH_ACCEPT_PERFORMATIVE, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage.Match_Accept_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage.Match_Accept_Performative) ), ), DESCRIPTOR=_FIPAMESSAGE, __module__="fipa_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.fipa.FipaMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.fipa.FipaMessage) ), ) _sym_db.RegisterMessage(FipaMessage) diff --git a/packages/fetchai/protocols/fipa/protocol.yaml b/packages/fetchai/protocols/fipa/protocol.yaml index 2615c78643..7eaa050db2 100644 --- a/packages/fetchai/protocols/fipa/protocol.yaml +++ b/packages/fetchai/protocols/fipa/protocol.yaml @@ -10,8 +10,8 @@ fingerprint: __init__.py: QmZuv8RGegxunYaJ7sHLwj2oLLCFCAGF139b8DxEY68MRT custom_types.py: Qmb7bzEUAW74ZeSFqL7sTccNCjudStV63K4CFNZtibKUHB dialogues.py: QmWaciW35ZTVeTeLWeyp3hjehKkWB5ZY7Di8N8cDH8Mjwb - fipa.proto: QmR1zwvMyS9D45aHkvqzhZ8TdKTzH5EjTfRbfr48pyqCmC - fipa_pb2.py: QmQoAM6ax2c9z6Dt6m4dDvEoW5p2B1CpJ45prTDjjYzttM + fipa.proto: Qmb19ojU7i5jUaRbURtnRSWQ6ENGniYuM3WtpRm6UYfpkU + fipa_pb2.py: QmTifDW1WQAgJevykfCQME5u3qQG5x74JMoLz1KYMTrfcU message.py: QmbFtigdnmqqmKZMTxjmk6JQJtcyhVY9a4mpEEcHmFJd24 serialization.py: QmccPH6KqD3DhZr778GW1iGaFXJgDacCjMPuqostvkqEaG fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/gym/gym.proto b/packages/fetchai/protocols/gym/gym.proto index d42a70171f..b173366975 100644 --- a/packages/fetchai/protocols/gym/gym.proto +++ b/packages/fetchai/protocols/gym/gym.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.gym; +package aea.fetchai.gym; message GymMessage{ diff --git a/packages/fetchai/protocols/gym/gym_pb2.py b/packages/fetchai/protocols/gym/gym_pb2.py index b7a30fdc66..f69f216a2f 100644 --- a/packages/fetchai/protocols/gym/gym_pb2.py +++ b/packages/fetchai/protocols/gym/gym_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="gym.proto", - package="fetchai.aea.fetchai.gym", + package="aea.fetchai.gym", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\tgym.proto\x12\x17\x66\x65tchai.aea.fetchai.gym"\x9d\x07\n\nGymMessage\x12\x43\n\x03\x61\x63t\x18\x05 \x01(\x0b\x32\x34.fetchai.aea.fetchai.gym.GymMessage.Act_PerformativeH\x00\x12G\n\x05\x63lose\x18\x06 \x01(\x0b\x32\x36.fetchai.aea.fetchai.gym.GymMessage.Close_PerformativeH\x00\x12K\n\x07percept\x18\x07 \x01(\x0b\x32\x38.fetchai.aea.fetchai.gym.GymMessage.Percept_PerformativeH\x00\x12G\n\x05reset\x18\x08 \x01(\x0b\x32\x36.fetchai.aea.fetchai.gym.GymMessage.Reset_PerformativeH\x00\x12I\n\x06status\x18\t \x01(\x0b\x32\x37.fetchai.aea.fetchai.gym.GymMessage.Status_PerformativeH\x00\x1a\x18\n\tAnyObject\x12\x0b\n\x03\x61ny\x18\x01 \x01(\x0c\x1a\x62\n\x10\x41\x63t_Performative\x12=\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32-.fetchai.aea.fetchai.gym.GymMessage.AnyObject\x12\x0f\n\x07step_id\x18\x02 \x01(\x05\x1a\xc6\x01\n\x14Percept_Performative\x12\x0f\n\x07step_id\x18\x01 \x01(\x05\x12\x42\n\x0bobservation\x18\x02 \x01(\x0b\x32-.fetchai.aea.fetchai.gym.GymMessage.AnyObject\x12\x0e\n\x06reward\x18\x03 \x01(\x02\x12\x0c\n\x04\x64one\x18\x04 \x01(\x08\x12;\n\x04info\x18\x05 \x01(\x0b\x32-.fetchai.aea.fetchai.gym.GymMessage.AnyObject\x1a\x9c\x01\n\x13Status_Performative\x12U\n\x07\x63ontent\x18\x01 \x03(\x0b\x32\x44.fetchai.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry\x1a.\n\x0c\x43ontentEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x14\n\x12Reset_Performative\x1a\x14\n\x12\x43lose_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + '\n\tgym.proto\x12\x0f\x61\x65\x61.fetchai.gym"\xd5\x06\n\nGymMessage\x12;\n\x03\x61\x63t\x18\x05 \x01(\x0b\x32,.aea.fetchai.gym.GymMessage.Act_PerformativeH\x00\x12?\n\x05\x63lose\x18\x06 \x01(\x0b\x32..aea.fetchai.gym.GymMessage.Close_PerformativeH\x00\x12\x43\n\x07percept\x18\x07 \x01(\x0b\x32\x30.aea.fetchai.gym.GymMessage.Percept_PerformativeH\x00\x12?\n\x05reset\x18\x08 \x01(\x0b\x32..aea.fetchai.gym.GymMessage.Reset_PerformativeH\x00\x12\x41\n\x06status\x18\t \x01(\x0b\x32/.aea.fetchai.gym.GymMessage.Status_PerformativeH\x00\x1a\x18\n\tAnyObject\x12\x0b\n\x03\x61ny\x18\x01 \x01(\x0c\x1aZ\n\x10\x41\x63t_Performative\x12\x35\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32%.aea.fetchai.gym.GymMessage.AnyObject\x12\x0f\n\x07step_id\x18\x02 \x01(\x05\x1a\xb6\x01\n\x14Percept_Performative\x12\x0f\n\x07step_id\x18\x01 \x01(\x05\x12:\n\x0bobservation\x18\x02 \x01(\x0b\x32%.aea.fetchai.gym.GymMessage.AnyObject\x12\x0e\n\x06reward\x18\x03 \x01(\x02\x12\x0c\n\x04\x64one\x18\x04 \x01(\x08\x12\x33\n\x04info\x18\x05 \x01(\x0b\x32%.aea.fetchai.gym.GymMessage.AnyObject\x1a\x94\x01\n\x13Status_Performative\x12M\n\x07\x63ontent\x18\x01 \x03(\x0b\x32<.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry\x1a.\n\x0c\x43ontentEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x14\n\x12Reset_Performative\x1a\x14\n\x12\x43lose_PerformativeB\x0e\n\x0cperformativeb\x06proto3' ), ) _GYMMESSAGE_ANYOBJECT = _descriptor.Descriptor( name="AnyObject", - full_name="fetchai.aea.fetchai.gym.GymMessage.AnyObject", + full_name="aea.fetchai.gym.GymMessage.AnyObject", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="any", - full_name="fetchai.aea.fetchai.gym.GymMessage.AnyObject.any", + full_name="aea.fetchai.gym.GymMessage.AnyObject.any", index=0, number=1, type=12, @@ -59,20 +59,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=420, - serialized_end=444, + serialized_start=372, + serialized_end=396, ) _GYMMESSAGE_ACT_PERFORMATIVE = _descriptor.Descriptor( name="Act_Performative", - full_name="fetchai.aea.fetchai.gym.GymMessage.Act_Performative", + full_name="aea.fetchai.gym.GymMessage.Act_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="action", - full_name="fetchai.aea.fetchai.gym.GymMessage.Act_Performative.action", + full_name="aea.fetchai.gym.GymMessage.Act_Performative.action", index=0, number=1, type=11, @@ -90,7 +90,7 @@ ), _descriptor.FieldDescriptor( name="step_id", - full_name="fetchai.aea.fetchai.gym.GymMessage.Act_Performative.step_id", + full_name="aea.fetchai.gym.GymMessage.Act_Performative.step_id", index=1, number=2, type=5, @@ -115,20 +115,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=446, - serialized_end=544, + serialized_start=398, + serialized_end=488, ) _GYMMESSAGE_PERCEPT_PERFORMATIVE = _descriptor.Descriptor( name="Percept_Performative", - full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative", + full_name="aea.fetchai.gym.GymMessage.Percept_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="step_id", - full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative.step_id", + full_name="aea.fetchai.gym.GymMessage.Percept_Performative.step_id", index=0, number=1, type=5, @@ -146,7 +146,7 @@ ), _descriptor.FieldDescriptor( name="observation", - full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative.observation", + full_name="aea.fetchai.gym.GymMessage.Percept_Performative.observation", index=1, number=2, type=11, @@ -164,7 +164,7 @@ ), _descriptor.FieldDescriptor( name="reward", - full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative.reward", + full_name="aea.fetchai.gym.GymMessage.Percept_Performative.reward", index=2, number=3, type=2, @@ -182,7 +182,7 @@ ), _descriptor.FieldDescriptor( name="done", - full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative.done", + full_name="aea.fetchai.gym.GymMessage.Percept_Performative.done", index=3, number=4, type=8, @@ -200,7 +200,7 @@ ), _descriptor.FieldDescriptor( name="info", - full_name="fetchai.aea.fetchai.gym.GymMessage.Percept_Performative.info", + full_name="aea.fetchai.gym.GymMessage.Percept_Performative.info", index=4, number=5, type=11, @@ -225,20 +225,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=547, - serialized_end=745, + serialized_start=491, + serialized_end=673, ) _GYMMESSAGE_STATUS_PERFORMATIVE_CONTENTENTRY = _descriptor.Descriptor( name="ContentEntry", - full_name="fetchai.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry", + full_name="aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry.key", + full_name="aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry.key", index=0, number=1, type=9, @@ -256,7 +256,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry.value", + full_name="aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry.value", index=1, number=2, type=9, @@ -281,20 +281,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=858, - serialized_end=904, + serialized_start=778, + serialized_end=824, ) _GYMMESSAGE_STATUS_PERFORMATIVE = _descriptor.Descriptor( name="Status_Performative", - full_name="fetchai.aea.fetchai.gym.GymMessage.Status_Performative", + full_name="aea.fetchai.gym.GymMessage.Status_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content", - full_name="fetchai.aea.fetchai.gym.GymMessage.Status_Performative.content", + full_name="aea.fetchai.gym.GymMessage.Status_Performative.content", index=0, number=1, type=11, @@ -319,13 +319,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=748, - serialized_end=904, + serialized_start=676, + serialized_end=824, ) _GYMMESSAGE_RESET_PERFORMATIVE = _descriptor.Descriptor( name="Reset_Performative", - full_name="fetchai.aea.fetchai.gym.GymMessage.Reset_Performative", + full_name="aea.fetchai.gym.GymMessage.Reset_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -338,13 +338,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=906, - serialized_end=926, + serialized_start=826, + serialized_end=846, ) _GYMMESSAGE_CLOSE_PERFORMATIVE = _descriptor.Descriptor( name="Close_Performative", - full_name="fetchai.aea.fetchai.gym.GymMessage.Close_Performative", + full_name="aea.fetchai.gym.GymMessage.Close_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -357,20 +357,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=928, - serialized_end=948, + serialized_start=848, + serialized_end=868, ) _GYMMESSAGE = _descriptor.Descriptor( name="GymMessage", - full_name="fetchai.aea.fetchai.gym.GymMessage", + full_name="aea.fetchai.gym.GymMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="act", - full_name="fetchai.aea.fetchai.gym.GymMessage.act", + full_name="aea.fetchai.gym.GymMessage.act", index=0, number=5, type=11, @@ -388,7 +388,7 @@ ), _descriptor.FieldDescriptor( name="close", - full_name="fetchai.aea.fetchai.gym.GymMessage.close", + full_name="aea.fetchai.gym.GymMessage.close", index=1, number=6, type=11, @@ -406,7 +406,7 @@ ), _descriptor.FieldDescriptor( name="percept", - full_name="fetchai.aea.fetchai.gym.GymMessage.percept", + full_name="aea.fetchai.gym.GymMessage.percept", index=2, number=7, type=11, @@ -424,7 +424,7 @@ ), _descriptor.FieldDescriptor( name="reset", - full_name="fetchai.aea.fetchai.gym.GymMessage.reset", + full_name="aea.fetchai.gym.GymMessage.reset", index=3, number=8, type=11, @@ -442,7 +442,7 @@ ), _descriptor.FieldDescriptor( name="status", - full_name="fetchai.aea.fetchai.gym.GymMessage.status", + full_name="aea.fetchai.gym.GymMessage.status", index=4, number=9, type=11, @@ -476,14 +476,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.gym.GymMessage.performative", + full_name="aea.fetchai.gym.GymMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=39, - serialized_end=964, + serialized_start=31, + serialized_end=884, ) _GYMMESSAGE_ANYOBJECT.containing_type = _GYMMESSAGE @@ -555,7 +555,7 @@ dict( DESCRIPTOR=_GYMMESSAGE_ANYOBJECT, __module__="gym_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.AnyObject) + # @@protoc_insertion_point(class_scope:aea.fetchai.gym.GymMessage.AnyObject) ), ), Act_Performative=_reflection.GeneratedProtocolMessageType( @@ -564,7 +564,7 @@ dict( DESCRIPTOR=_GYMMESSAGE_ACT_PERFORMATIVE, __module__="gym_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Act_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.gym.GymMessage.Act_Performative) ), ), Percept_Performative=_reflection.GeneratedProtocolMessageType( @@ -573,7 +573,7 @@ dict( DESCRIPTOR=_GYMMESSAGE_PERCEPT_PERFORMATIVE, __module__="gym_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Percept_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.gym.GymMessage.Percept_Performative) ), ), Status_Performative=_reflection.GeneratedProtocolMessageType( @@ -586,12 +586,12 @@ dict( DESCRIPTOR=_GYMMESSAGE_STATUS_PERFORMATIVE_CONTENTENTRY, __module__="gym_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.gym.GymMessage.Status_Performative.ContentEntry) ), ), DESCRIPTOR=_GYMMESSAGE_STATUS_PERFORMATIVE, __module__="gym_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Status_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.gym.GymMessage.Status_Performative) ), ), Reset_Performative=_reflection.GeneratedProtocolMessageType( @@ -600,7 +600,7 @@ dict( DESCRIPTOR=_GYMMESSAGE_RESET_PERFORMATIVE, __module__="gym_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Reset_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.gym.GymMessage.Reset_Performative) ), ), Close_Performative=_reflection.GeneratedProtocolMessageType( @@ -609,12 +609,12 @@ dict( DESCRIPTOR=_GYMMESSAGE_CLOSE_PERFORMATIVE, __module__="gym_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage.Close_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.gym.GymMessage.Close_Performative) ), ), DESCRIPTOR=_GYMMESSAGE, __module__="gym_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.gym.GymMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.gym.GymMessage) ), ) _sym_db.RegisterMessage(GymMessage) diff --git a/packages/fetchai/protocols/gym/protocol.yaml b/packages/fetchai/protocols/gym/protocol.yaml index 067c9b24de..cef4cd1cc8 100644 --- a/packages/fetchai/protocols/gym/protocol.yaml +++ b/packages/fetchai/protocols/gym/protocol.yaml @@ -10,8 +10,8 @@ fingerprint: __init__.py: QmWBvruqGuU2BVCq8cuP1S3mgvuC78yrG4TdtSvKhCT8qX custom_types.py: QmfDaswopanUqsETQXMatKfwwDSSo7q2Edz9MXGimT5jbf dialogues.py: QmdCzcFfyPF43U2SoxwshG5p4hd6dK49m6GYKduDHbnNPo - gym.proto: QmeYNsnWj9yYLiMyJqTBFPw9o2TUVDBo8WfyaDcY8D87EF - gym_pb2.py: QmVW25q9Yhb1SG1HgpLMhWpYXBHkHsGq481gpR3gx8xcZG + gym.proto: QmbrGMjAwLXxg4vZTTsdNkbsudhJbSbvkG2mag9RP6ejEg + gym_pb2.py: QmQmbRXAdHQGF4oWk27deqHhMYqmUWviLrAkvnGAVAXpeE message.py: Qmc4wx56DVaSpLe6h7KSUBmxEWoHVFFAQQB4mpympggcTG serialization.py: QmSxsJYMNbowsrCeY5s14FbT8J1XJf2LkPDaGv7ZP5ea4e fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/http/http.proto b/packages/fetchai/protocols/http/http.proto index e8f34e6267..fd13372c6c 100644 --- a/packages/fetchai/protocols/http/http.proto +++ b/packages/fetchai/protocols/http/http.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.http; +package aea.fetchai.http; message HttpMessage{ diff --git a/packages/fetchai/protocols/http/http_pb2.py b/packages/fetchai/protocols/http/http_pb2.py index da8ac345d1..68159db4e6 100644 --- a/packages/fetchai/protocols/http/http_pb2.py +++ b/packages/fetchai/protocols/http/http_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="http.proto", - package="fetchai.aea.fetchai.http", + package="aea.fetchai.http", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\nhttp.proto\x12\x18\x66\x65tchai.aea.fetchai.http"\x97\x03\n\x0bHttpMessage\x12M\n\x07request\x18\x05 \x01(\x0b\x32:.fetchai.aea.fetchai.http.HttpMessage.Request_PerformativeH\x00\x12O\n\x08response\x18\x06 \x01(\x0b\x32;.fetchai.aea.fetchai.http.HttpMessage.Response_PerformativeH\x00\x1a\x64\n\x14Request_Performative\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\r\n\x05\x62odyy\x18\x05 \x01(\x0c\x1ar\n\x15Response_Performative\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x13\n\x0bstatus_code\x18\x02 \x01(\x05\x12\x13\n\x0bstatus_text\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\r\n\x05\x62odyy\x18\x05 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3' + '\n\nhttp.proto\x12\x10\x61\x65\x61.fetchai.http"\x87\x03\n\x0bHttpMessage\x12\x45\n\x07request\x18\x05 \x01(\x0b\x32\x32.aea.fetchai.http.HttpMessage.Request_PerformativeH\x00\x12G\n\x08response\x18\x06 \x01(\x0b\x32\x33.aea.fetchai.http.HttpMessage.Response_PerformativeH\x00\x1a\x64\n\x14Request_Performative\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\r\n\x05\x62odyy\x18\x05 \x01(\x0c\x1ar\n\x15Response_Performative\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x13\n\x0bstatus_code\x18\x02 \x01(\x05\x12\x13\n\x0bstatus_text\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\r\n\x05\x62odyy\x18\x05 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3' ), ) _HTTPMESSAGE_REQUEST_PERFORMATIVE = _descriptor.Descriptor( name="Request_Performative", - full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative", + full_name="aea.fetchai.http.HttpMessage.Request_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="method", - full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative.method", + full_name="aea.fetchai.http.HttpMessage.Request_Performative.method", index=0, number=1, type=9, @@ -52,7 +52,7 @@ ), _descriptor.FieldDescriptor( name="url", - full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative.url", + full_name="aea.fetchai.http.HttpMessage.Request_Performative.url", index=1, number=2, type=9, @@ -70,7 +70,7 @@ ), _descriptor.FieldDescriptor( name="version", - full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative.version", + full_name="aea.fetchai.http.HttpMessage.Request_Performative.version", index=2, number=3, type=9, @@ -88,7 +88,7 @@ ), _descriptor.FieldDescriptor( name="headers", - full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative.headers", + full_name="aea.fetchai.http.HttpMessage.Request_Performative.headers", index=3, number=4, type=9, @@ -106,7 +106,7 @@ ), _descriptor.FieldDescriptor( name="bodyy", - full_name="fetchai.aea.fetchai.http.HttpMessage.Request_Performative.bodyy", + full_name="aea.fetchai.http.HttpMessage.Request_Performative.bodyy", index=4, number=5, type=12, @@ -131,20 +131,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=216, - serialized_end=316, + serialized_start=192, + serialized_end=292, ) _HTTPMESSAGE_RESPONSE_PERFORMATIVE = _descriptor.Descriptor( name="Response_Performative", - full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative", + full_name="aea.fetchai.http.HttpMessage.Response_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="version", - full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative.version", + full_name="aea.fetchai.http.HttpMessage.Response_Performative.version", index=0, number=1, type=9, @@ -162,7 +162,7 @@ ), _descriptor.FieldDescriptor( name="status_code", - full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative.status_code", + full_name="aea.fetchai.http.HttpMessage.Response_Performative.status_code", index=1, number=2, type=5, @@ -180,7 +180,7 @@ ), _descriptor.FieldDescriptor( name="status_text", - full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative.status_text", + full_name="aea.fetchai.http.HttpMessage.Response_Performative.status_text", index=2, number=3, type=9, @@ -198,7 +198,7 @@ ), _descriptor.FieldDescriptor( name="headers", - full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative.headers", + full_name="aea.fetchai.http.HttpMessage.Response_Performative.headers", index=3, number=4, type=9, @@ -216,7 +216,7 @@ ), _descriptor.FieldDescriptor( name="bodyy", - full_name="fetchai.aea.fetchai.http.HttpMessage.Response_Performative.bodyy", + full_name="aea.fetchai.http.HttpMessage.Response_Performative.bodyy", index=4, number=5, type=12, @@ -241,20 +241,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=318, - serialized_end=432, + serialized_start=294, + serialized_end=408, ) _HTTPMESSAGE = _descriptor.Descriptor( name="HttpMessage", - full_name="fetchai.aea.fetchai.http.HttpMessage", + full_name="aea.fetchai.http.HttpMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="request", - full_name="fetchai.aea.fetchai.http.HttpMessage.request", + full_name="aea.fetchai.http.HttpMessage.request", index=0, number=5, type=11, @@ -272,7 +272,7 @@ ), _descriptor.FieldDescriptor( name="response", - full_name="fetchai.aea.fetchai.http.HttpMessage.response", + full_name="aea.fetchai.http.HttpMessage.response", index=1, number=6, type=11, @@ -302,14 +302,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.http.HttpMessage.performative", + full_name="aea.fetchai.http.HttpMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=41, - serialized_end=448, + serialized_start=33, + serialized_end=424, ) _HTTPMESSAGE_REQUEST_PERFORMATIVE.containing_type = _HTTPMESSAGE @@ -343,7 +343,7 @@ dict( DESCRIPTOR=_HTTPMESSAGE_REQUEST_PERFORMATIVE, __module__="http_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.http.HttpMessage.Request_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.http.HttpMessage.Request_Performative) ), ), Response_Performative=_reflection.GeneratedProtocolMessageType( @@ -352,12 +352,12 @@ dict( DESCRIPTOR=_HTTPMESSAGE_RESPONSE_PERFORMATIVE, __module__="http_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.http.HttpMessage.Response_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.http.HttpMessage.Response_Performative) ), ), DESCRIPTOR=_HTTPMESSAGE, __module__="http_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.http.HttpMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.http.HttpMessage) ), ) _sym_db.RegisterMessage(HttpMessage) diff --git a/packages/fetchai/protocols/http/protocol.yaml b/packages/fetchai/protocols/http/protocol.yaml index cf2b6b3798..7f67fbe894 100644 --- a/packages/fetchai/protocols/http/protocol.yaml +++ b/packages/fetchai/protocols/http/protocol.yaml @@ -9,8 +9,8 @@ fingerprint: README.md: QmY7fxhyNBgwU7uc6LKtCN4aSQ4bym5BwqtwRAfwPokULN __init__.py: QmRWie4QPiFJE8nK4fFJ6prqoG3u36cPo7st5JUZAGpVWv dialogues.py: QmdwTehjCppcxyDid8m6zuHY5YwprUhato88R9Zdm9aXaM - http.proto: Qmc69XzEVztUJGpJJoUwoZnq2Pi3K4sKzFeMookVC2QuxN - http_pb2.py: QmeGUMT6ALDWQyMgYAy481RqvZxjeTG4aq3E8msdRtmmbX + http.proto: QmXafGzyZC37aNn6RwSfBVXDU3dzvGfYtQRA43mgXPeUoq + http_pb2.py: QmeXYdCjWbwisjZ2MUswgHqgKmaauJyD1r96F1s1vWAUCT message.py: QmYSmd2xLU8TsLLorxxNnaHj1cVLztgrKtQnaqJ1USFkPY serialization.py: QmWHtnfKcgDyE3CBuP4LRVRToj8MBS4EoaoETDcV1Jdoe5 fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/ledger_api/ledger_api.proto b/packages/fetchai/protocols/ledger_api/ledger_api.proto index 76d9490701..cfbefc01ea 100644 --- a/packages/fetchai/protocols/ledger_api/ledger_api.proto +++ b/packages/fetchai/protocols/ledger_api/ledger_api.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.ledger_api; +package aea.fetchai.ledger_api; message LedgerApiMessage{ diff --git a/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py b/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py index 0c689a9e70..b3b37a8453 100644 --- a/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py +++ b/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="ledger_api.proto", - package="fetchai.aea.fetchai.ledger_api", + package="aea.fetchai.ledger_api", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\x10ledger_api.proto\x12\x1e\x66\x65tchai.aea.fetchai.ledger_api"\xac\x11\n\x10LedgerApiMessage\x12X\n\x07\x62\x61lance\x18\x05 \x01(\x0b\x32\x45.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Balance_PerformativeH\x00\x12T\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x43.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_PerformativeH\x00\x12`\n\x0bget_balance\x18\x07 \x01(\x0b\x32I.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_PerformativeH\x00\x12p\n\x13get_raw_transaction\x18\x08 \x01(\x0b\x32Q.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_PerformativeH\x00\x12x\n\x17get_transaction_receipt\x18\t \x01(\x0b\x32U.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_PerformativeH\x00\x12h\n\x0fraw_transaction\x18\n \x01(\x0b\x32M.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_PerformativeH\x00\x12x\n\x17send_signed_transaction\x18\x0b \x01(\x0b\x32U.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_PerformativeH\x00\x12n\n\x12transaction_digest\x18\x0c \x01(\x0b\x32P.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_PerformativeH\x00\x12p\n\x13transaction_receipt\x18\r \x01(\x0b\x32Q.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_PerformativeH\x00\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a/\n\x11SignedTransaction\x12\x1a\n\x12signed_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05Terms\x12\r\n\x05terms\x18\x01 \x01(\x0c\x1a/\n\x11TransactionDigest\x12\x1a\n\x12transaction_digest\x18\x01 \x01(\x0c\x1a\x31\n\x12TransactionReceipt\x12\x1b\n\x13transaction_receipt\x18\x01 \x01(\x0c\x1a>\n\x18Get_Balance_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x1ai\n Get_Raw_Transaction_Performative\x12\x45\n\x05terms\x18\x01 \x01(\x0b\x32\x36.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Terms\x1a\x86\x01\n$Send_Signed_Transaction_Performative\x12^\n\x12signed_transaction\x18\x01 \x01(\x0b\x32\x42.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction\x1a\x86\x01\n$Get_Transaction_Receipt_Performative\x12^\n\x12transaction_digest\x18\x01 \x01(\x0b\x32\x42.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest\x1a:\n\x14\x42\x61lance_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x0f\n\x07\x62\x61lance\x18\x02 \x01(\x05\x1ax\n\x1cRaw_Transaction_Performative\x12X\n\x0fraw_transaction\x18\x01 \x01(\x0b\x32?.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction\x1a\x81\x01\n\x1fTransaction_Digest_Performative\x12^\n\x12transaction_digest\x18\x01 \x01(\x0b\x32\x42.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest\x1a\x84\x01\n Transaction_Receipt_Performative\x12`\n\x13transaction_receipt\x18\x01 \x01(\x0b\x32\x43.fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt\x1an\n\x12\x45rror_Performative\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x16\n\x0emessage_is_set\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x13\n\x0b\x64\x61ta_is_set\x18\x05 \x01(\x08\x42\x0e\n\x0cperformativeb\x06proto3' + '\n\x10ledger_api.proto\x12\x16\x61\x65\x61.fetchai.ledger_api"\xb0\x10\n\x10LedgerApiMessage\x12P\n\x07\x62\x61lance\x18\x05 \x01(\x0b\x32=.aea.fetchai.ledger_api.LedgerApiMessage.Balance_PerformativeH\x00\x12L\n\x05\x65rror\x18\x06 \x01(\x0b\x32;.aea.fetchai.ledger_api.LedgerApiMessage.Error_PerformativeH\x00\x12X\n\x0bget_balance\x18\x07 \x01(\x0b\x32\x41.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_PerformativeH\x00\x12h\n\x13get_raw_transaction\x18\x08 \x01(\x0b\x32I.aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_PerformativeH\x00\x12p\n\x17get_transaction_receipt\x18\t \x01(\x0b\x32M.aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_PerformativeH\x00\x12`\n\x0fraw_transaction\x18\n \x01(\x0b\x32\x45.aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_PerformativeH\x00\x12p\n\x17send_signed_transaction\x18\x0b \x01(\x0b\x32M.aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_PerformativeH\x00\x12\x66\n\x12transaction_digest\x18\x0c \x01(\x0b\x32H.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_PerformativeH\x00\x12h\n\x13transaction_receipt\x18\r \x01(\x0b\x32I.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_PerformativeH\x00\x1a)\n\x0eRawTransaction\x12\x17\n\x0fraw_transaction\x18\x01 \x01(\x0c\x1a/\n\x11SignedTransaction\x12\x1a\n\x12signed_transaction\x18\x01 \x01(\x0c\x1a\x16\n\x05Terms\x12\r\n\x05terms\x18\x01 \x01(\x0c\x1a/\n\x11TransactionDigest\x12\x1a\n\x12transaction_digest\x18\x01 \x01(\x0c\x1a\x31\n\x12TransactionReceipt\x12\x1b\n\x13transaction_receipt\x18\x01 \x01(\x0c\x1a>\n\x18Get_Balance_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x1a\x61\n Get_Raw_Transaction_Performative\x12=\n\x05terms\x18\x01 \x01(\x0b\x32..aea.fetchai.ledger_api.LedgerApiMessage.Terms\x1a~\n$Send_Signed_Transaction_Performative\x12V\n\x12signed_transaction\x18\x01 \x01(\x0b\x32:.aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction\x1a~\n$Get_Transaction_Receipt_Performative\x12V\n\x12transaction_digest\x18\x01 \x01(\x0b\x32:.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest\x1a:\n\x14\x42\x61lance_Performative\x12\x11\n\tledger_id\x18\x01 \x01(\t\x12\x0f\n\x07\x62\x61lance\x18\x02 \x01(\x05\x1ap\n\x1cRaw_Transaction_Performative\x12P\n\x0fraw_transaction\x18\x01 \x01(\x0b\x32\x37.aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction\x1ay\n\x1fTransaction_Digest_Performative\x12V\n\x12transaction_digest\x18\x01 \x01(\x0b\x32:.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest\x1a|\n Transaction_Receipt_Performative\x12X\n\x13transaction_receipt\x18\x01 \x01(\x0b\x32;.aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt\x1an\n\x12\x45rror_Performative\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x16\n\x0emessage_is_set\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x13\n\x0b\x64\x61ta_is_set\x18\x05 \x01(\x08\x42\x0e\n\x0cperformativeb\x06proto3' ), ) _LEDGERAPIMESSAGE_RAWTRANSACTION = _descriptor.Descriptor( name="RawTransaction", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction.raw_transaction", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction.raw_transaction", index=0, number=1, type=12, @@ -59,20 +59,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1037, - serialized_end=1078, + serialized_start=957, + serialized_end=998, ) _LEDGERAPIMESSAGE_SIGNEDTRANSACTION = _descriptor.Descriptor( name="SignedTransaction", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_transaction", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction.signed_transaction", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction.signed_transaction", index=0, number=1, type=12, @@ -97,20 +97,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1080, - serialized_end=1127, + serialized_start=1000, + serialized_end=1047, ) _LEDGERAPIMESSAGE_TERMS = _descriptor.Descriptor( name="Terms", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Terms", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Terms", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Terms.terms", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Terms.terms", index=0, number=1, type=12, @@ -135,20 +135,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1129, - serialized_end=1151, + serialized_start=1049, + serialized_end=1071, ) _LEDGERAPIMESSAGE_TRANSACTIONDIGEST = _descriptor.Descriptor( name="TransactionDigest", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_digest", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest.transaction_digest", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest.transaction_digest", index=0, number=1, type=12, @@ -173,20 +173,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1153, - serialized_end=1200, + serialized_start=1073, + serialized_end=1120, ) _LEDGERAPIMESSAGE_TRANSACTIONRECEIPT = _descriptor.Descriptor( name="TransactionReceipt", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_receipt", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt.transaction_receipt", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt.transaction_receipt", index=0, number=1, type=12, @@ -211,20 +211,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1202, - serialized_end=1251, + serialized_start=1122, + serialized_end=1171, ) _LEDGERAPIMESSAGE_GET_BALANCE_PERFORMATIVE = _descriptor.Descriptor( name="Get_Balance_Performative", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative.ledger_id", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative.ledger_id", index=0, number=1, type=9, @@ -242,7 +242,7 @@ ), _descriptor.FieldDescriptor( name="address", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative.address", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative.address", index=1, number=2, type=9, @@ -267,20 +267,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1253, - serialized_end=1315, + serialized_start=1173, + serialized_end=1235, ) _LEDGERAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Get_Raw_Transaction_Performative", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_Performative", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_Performative.terms", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_Performative.terms", index=0, number=1, type=11, @@ -305,20 +305,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1317, - serialized_end=1422, + serialized_start=1237, + serialized_end=1334, ) _LEDGERAPIMESSAGE_SEND_SIGNED_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Send_Signed_Transaction_Performative", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_Performative", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="signed_transaction", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_Performative.signed_transaction", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_Performative.signed_transaction", index=0, number=1, type=11, @@ -343,20 +343,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1425, - serialized_end=1559, + serialized_start=1336, + serialized_end=1462, ) _LEDGERAPIMESSAGE_GET_TRANSACTION_RECEIPT_PERFORMATIVE = _descriptor.Descriptor( name="Get_Transaction_Receipt_Performative", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_Performative", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_digest", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_Performative.transaction_digest", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_Performative.transaction_digest", index=0, number=1, type=11, @@ -381,20 +381,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1562, - serialized_end=1696, + serialized_start=1464, + serialized_end=1590, ) _LEDGERAPIMESSAGE_BALANCE_PERFORMATIVE = _descriptor.Descriptor( name="Balance_Performative", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative.ledger_id", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative.ledger_id", index=0, number=1, type=9, @@ -412,7 +412,7 @@ ), _descriptor.FieldDescriptor( name="balance", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative.balance", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative.balance", index=1, number=2, type=5, @@ -437,20 +437,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1698, - serialized_end=1756, + serialized_start=1592, + serialized_end=1650, ) _LEDGERAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Raw_Transaction_Performative", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_Performative", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_Performative.raw_transaction", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_Performative.raw_transaction", index=0, number=1, type=11, @@ -475,20 +475,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1758, - serialized_end=1878, + serialized_start=1652, + serialized_end=1764, ) _LEDGERAPIMESSAGE_TRANSACTION_DIGEST_PERFORMATIVE = _descriptor.Descriptor( name="Transaction_Digest_Performative", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_Performative", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_digest", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_Performative.transaction_digest", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_Performative.transaction_digest", index=0, number=1, type=11, @@ -513,20 +513,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1881, - serialized_end=2010, + serialized_start=1766, + serialized_end=1887, ) _LEDGERAPIMESSAGE_TRANSACTION_RECEIPT_PERFORMATIVE = _descriptor.Descriptor( name="Transaction_Receipt_Performative", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_Performative", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_receipt", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_Performative.transaction_receipt", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_Performative.transaction_receipt", index=0, number=1, type=11, @@ -551,20 +551,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=2013, - serialized_end=2145, + serialized_start=1889, + serialized_end=2013, ) _LEDGERAPIMESSAGE_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Error_Performative", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="code", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.code", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.code", index=0, number=1, type=5, @@ -582,7 +582,7 @@ ), _descriptor.FieldDescriptor( name="message", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.message", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.message", index=1, number=2, type=9, @@ -600,7 +600,7 @@ ), _descriptor.FieldDescriptor( name="message_is_set", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.message_is_set", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.message_is_set", index=2, number=3, type=8, @@ -618,7 +618,7 @@ ), _descriptor.FieldDescriptor( name="data", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.data", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.data", index=3, number=4, type=12, @@ -636,7 +636,7 @@ ), _descriptor.FieldDescriptor( name="data_is_set", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.data_is_set", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative.data_is_set", index=4, number=5, type=8, @@ -661,20 +661,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=2147, - serialized_end=2257, + serialized_start=2015, + serialized_end=2125, ) _LEDGERAPIMESSAGE = _descriptor.Descriptor( name="LedgerApiMessage", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage", + full_name="aea.fetchai.ledger_api.LedgerApiMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="balance", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.balance", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.balance", index=0, number=5, type=11, @@ -692,7 +692,7 @@ ), _descriptor.FieldDescriptor( name="error", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.error", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.error", index=1, number=6, type=11, @@ -710,7 +710,7 @@ ), _descriptor.FieldDescriptor( name="get_balance", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.get_balance", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.get_balance", index=2, number=7, type=11, @@ -728,7 +728,7 @@ ), _descriptor.FieldDescriptor( name="get_raw_transaction", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.get_raw_transaction", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.get_raw_transaction", index=3, number=8, type=11, @@ -746,7 +746,7 @@ ), _descriptor.FieldDescriptor( name="get_transaction_receipt", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.get_transaction_receipt", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.get_transaction_receipt", index=4, number=9, type=11, @@ -764,7 +764,7 @@ ), _descriptor.FieldDescriptor( name="raw_transaction", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.raw_transaction", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.raw_transaction", index=5, number=10, type=11, @@ -782,7 +782,7 @@ ), _descriptor.FieldDescriptor( name="send_signed_transaction", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.send_signed_transaction", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.send_signed_transaction", index=6, number=11, type=11, @@ -800,7 +800,7 @@ ), _descriptor.FieldDescriptor( name="transaction_digest", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.transaction_digest", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.transaction_digest", index=7, number=12, type=11, @@ -818,7 +818,7 @@ ), _descriptor.FieldDescriptor( name="transaction_receipt", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.transaction_receipt", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.transaction_receipt", index=8, number=13, type=11, @@ -860,14 +860,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.ledger_api.LedgerApiMessage.performative", + full_name="aea.fetchai.ledger_api.LedgerApiMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=53, - serialized_end=2273, + serialized_start=45, + serialized_end=2141, ) _LEDGERAPIMESSAGE_RAWTRANSACTION.containing_type = _LEDGERAPIMESSAGE @@ -1000,7 +1000,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_RAWTRANSACTION, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.RawTransaction) ), ), SignedTransaction=_reflection.GeneratedProtocolMessageType( @@ -1009,7 +1009,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_SIGNEDTRANSACTION, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.SignedTransaction) ), ), Terms=_reflection.GeneratedProtocolMessageType( @@ -1018,7 +1018,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_TERMS, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Terms) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.Terms) ), ), TransactionDigest=_reflection.GeneratedProtocolMessageType( @@ -1027,7 +1027,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_TRANSACTIONDIGEST, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.TransactionDigest) ), ), TransactionReceipt=_reflection.GeneratedProtocolMessageType( @@ -1036,7 +1036,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_TRANSACTIONRECEIPT, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.TransactionReceipt) ), ), Get_Balance_Performative=_reflection.GeneratedProtocolMessageType( @@ -1045,7 +1045,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_GET_BALANCE_PERFORMATIVE, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.Get_Balance_Performative) ), ), Get_Raw_Transaction_Performative=_reflection.GeneratedProtocolMessageType( @@ -1054,7 +1054,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.Get_Raw_Transaction_Performative) ), ), Send_Signed_Transaction_Performative=_reflection.GeneratedProtocolMessageType( @@ -1063,7 +1063,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_SEND_SIGNED_TRANSACTION_PERFORMATIVE, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.Send_Signed_Transaction_Performative) ), ), Get_Transaction_Receipt_Performative=_reflection.GeneratedProtocolMessageType( @@ -1072,7 +1072,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_GET_TRANSACTION_RECEIPT_PERFORMATIVE, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.Get_Transaction_Receipt_Performative) ), ), Balance_Performative=_reflection.GeneratedProtocolMessageType( @@ -1081,7 +1081,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_BALANCE_PERFORMATIVE, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.Balance_Performative) ), ), Raw_Transaction_Performative=_reflection.GeneratedProtocolMessageType( @@ -1090,7 +1090,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.Raw_Transaction_Performative) ), ), Transaction_Digest_Performative=_reflection.GeneratedProtocolMessageType( @@ -1099,7 +1099,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_TRANSACTION_DIGEST_PERFORMATIVE, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Digest_Performative) ), ), Transaction_Receipt_Performative=_reflection.GeneratedProtocolMessageType( @@ -1108,7 +1108,7 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_TRANSACTION_RECEIPT_PERFORMATIVE, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.Transaction_Receipt_Performative) ), ), Error_Performative=_reflection.GeneratedProtocolMessageType( @@ -1117,12 +1117,12 @@ dict( DESCRIPTOR=_LEDGERAPIMESSAGE_ERROR_PERFORMATIVE, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage.Error_Performative) ), ), DESCRIPTOR=_LEDGERAPIMESSAGE, __module__="ledger_api_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ledger_api.LedgerApiMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.ledger_api.LedgerApiMessage) ), ) _sym_db.RegisterMessage(LedgerApiMessage) diff --git a/packages/fetchai/protocols/ledger_api/protocol.yaml b/packages/fetchai/protocols/ledger_api/protocol.yaml index 21e28bccdc..1685412d7c 100644 --- a/packages/fetchai/protocols/ledger_api/protocol.yaml +++ b/packages/fetchai/protocols/ledger_api/protocol.yaml @@ -10,8 +10,8 @@ fingerprint: __init__.py: Qmct8jVx6ndWwaa5HXJAJgMraVuZ8kMeyx6rnEeHAYHwDJ custom_types.py: QmWRrvFStMhVJy8P2WD6qjDgk14ZnxErN7XymxUtof7HQo dialogues.py: QmRtWkAfR9WTvygMJ36R758RzdY2mGQs2fgtHCfjxmeaHy - ledger_api.proto: QmSGwWr8LUz1FHeNXQFsrAKxsyibvzao6WBHvzWF2peg2u - ledger_api_pb2.py: QmbtzWSYdAQZjq6rq79Zq7BgRhT4QVEsXwcJwmT6xhGXHf + ledger_api.proto: QmR7b3Mj4Jt4Y5ChZ7x42nxLtQrs2VBRvb2dqV3EaPW6B8 + ledger_api_pb2.py: QmUMeo2X58acnBaVQuDpMhteNuzagbT79vf5mdtMJLk9VF message.py: QmcLuy4YcL22qs3jHf5KHZ7vZueiTDrEmbWjfRTbyzwc5m serialization.py: QmSarPknCq2LiKZx3PHgE9eXhrygPSyiu15WCS46W9BD3E fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/ml_trade/ml_trade.proto b/packages/fetchai/protocols/ml_trade/ml_trade.proto index 83578150d1..10860e59bc 100644 --- a/packages/fetchai/protocols/ml_trade/ml_trade.proto +++ b/packages/fetchai/protocols/ml_trade/ml_trade.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.ml_trade; +package aea.fetchai.ml_trade; message MlTradeMessage{ diff --git a/packages/fetchai/protocols/ml_trade/ml_trade_pb2.py b/packages/fetchai/protocols/ml_trade/ml_trade_pb2.py index 7eae74b29c..8afb841a34 100644 --- a/packages/fetchai/protocols/ml_trade/ml_trade_pb2.py +++ b/packages/fetchai/protocols/ml_trade/ml_trade_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="ml_trade.proto", - package="fetchai.aea.fetchai.ml_trade", + package="aea.fetchai.ml_trade", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\x0eml_trade.proto\x12\x1c\x66\x65tchai.aea.fetchai.ml_trade"\xb5\x07\n\x0eMlTradeMessage\x12R\n\x06\x61\x63\x63\x65pt\x18\x05 \x01(\x0b\x32@.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Accept_PerformativeH\x00\x12L\n\x03\x63\x66p\x18\x06 \x01(\x0b\x32=.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Cfp_PerformativeH\x00\x12N\n\x04\x64\x61ta\x18\x07 \x01(\x0b\x32>.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Data_PerformativeH\x00\x12P\n\x05terms\x18\x08 \x01(\x0b\x32?.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Terms_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\x92\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12M\n\x07nothing\x18\x02 \x01(\x0b\x32:.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1aU\n\x10\x43\x66p_Performative\x12\x41\n\x05query\x18\x01 \x01(\x0b\x32\x32.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query\x1a]\n\x12Terms_Performative\x12G\n\x05terms\x18\x01 \x01(\x0b\x32\x38.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description\x1aq\n\x13\x41\x63\x63\x65pt_Performative\x12G\n\x05terms\x18\x01 \x01(\x0b\x32\x38.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description\x12\x11\n\ttx_digest\x18\x02 \x01(\t\x1am\n\x11\x44\x61ta_Performative\x12G\n\x05terms\x18\x01 \x01(\x0b\x32\x38.fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3' + '\n\x0eml_trade.proto\x12\x14\x61\x65\x61.fetchai.ml_trade"\xed\x06\n\x0eMlTradeMessage\x12J\n\x06\x61\x63\x63\x65pt\x18\x05 \x01(\x0b\x32\x38.aea.fetchai.ml_trade.MlTradeMessage.Accept_PerformativeH\x00\x12\x44\n\x03\x63\x66p\x18\x06 \x01(\x0b\x32\x35.aea.fetchai.ml_trade.MlTradeMessage.Cfp_PerformativeH\x00\x12\x46\n\x04\x64\x61ta\x18\x07 \x01(\x0b\x32\x36.aea.fetchai.ml_trade.MlTradeMessage.Data_PerformativeH\x00\x12H\n\x05terms\x18\x08 \x01(\x0b\x32\x37.aea.fetchai.ml_trade.MlTradeMessage.Terms_PerformativeH\x00\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\x8a\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12\x45\n\x07nothing\x18\x02 \x01(\x0b\x32\x32.aea.fetchai.ml_trade.MlTradeMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1aM\n\x10\x43\x66p_Performative\x12\x39\n\x05query\x18\x01 \x01(\x0b\x32*.aea.fetchai.ml_trade.MlTradeMessage.Query\x1aU\n\x12Terms_Performative\x12?\n\x05terms\x18\x01 \x01(\x0b\x32\x30.aea.fetchai.ml_trade.MlTradeMessage.Description\x1ai\n\x13\x41\x63\x63\x65pt_Performative\x12?\n\x05terms\x18\x01 \x01(\x0b\x32\x30.aea.fetchai.ml_trade.MlTradeMessage.Description\x12\x11\n\ttx_digest\x18\x02 \x01(\t\x1a\x65\n\x11\x44\x61ta_Performative\x12?\n\x05terms\x18\x01 \x01(\x0b\x32\x30.aea.fetchai.ml_trade.MlTradeMessage.Description\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3' ), ) _MLTRADEMESSAGE_DESCRIPTION = _descriptor.Descriptor( name="Description", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Description", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="description", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description.description", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Description.description", index=0, number=1, type=12, @@ -59,13 +59,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=391, - serialized_end=425, + serialized_start=351, + serialized_end=385, ) _MLTRADEMESSAGE_QUERY_NOTHING = _descriptor.Descriptor( name="Nothing", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.Nothing", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Query.Nothing", filename=None, file=DESCRIPTOR, containing_type=None, @@ -78,20 +78,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=556, - serialized_end=565, + serialized_start=508, + serialized_end=517, ) _MLTRADEMESSAGE_QUERY = _descriptor.Descriptor( name="Query", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Query", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="bytes", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.bytes", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Query.bytes", index=0, number=1, type=12, @@ -109,7 +109,7 @@ ), _descriptor.FieldDescriptor( name="nothing", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.nothing", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Query.nothing", index=1, number=2, type=11, @@ -127,7 +127,7 @@ ), _descriptor.FieldDescriptor( name="query_bytes", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.query_bytes", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Query.query_bytes", index=2, number=3, type=12, @@ -154,26 +154,26 @@ oneofs=[ _descriptor.OneofDescriptor( name="query", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.query", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Query.query", index=0, containing_type=None, fields=[], ), ], - serialized_start=428, - serialized_end=574, + serialized_start=388, + serialized_end=526, ) _MLTRADEMESSAGE_CFP_PERFORMATIVE = _descriptor.Descriptor( name="Cfp_Performative", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Cfp_Performative", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Cfp_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="query", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Cfp_Performative.query", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Cfp_Performative.query", index=0, number=1, type=11, @@ -198,20 +198,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=576, - serialized_end=661, + serialized_start=528, + serialized_end=605, ) _MLTRADEMESSAGE_TERMS_PERFORMATIVE = _descriptor.Descriptor( name="Terms_Performative", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Terms_Performative", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Terms_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Terms_Performative.terms", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Terms_Performative.terms", index=0, number=1, type=11, @@ -236,20 +236,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=663, - serialized_end=756, + serialized_start=607, + serialized_end=692, ) _MLTRADEMESSAGE_ACCEPT_PERFORMATIVE = _descriptor.Descriptor( name="Accept_Performative", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative.terms", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative.terms", index=0, number=1, type=11, @@ -267,7 +267,7 @@ ), _descriptor.FieldDescriptor( name="tx_digest", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative.tx_digest", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative.tx_digest", index=1, number=2, type=9, @@ -292,20 +292,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=758, - serialized_end=871, + serialized_start=694, + serialized_end=799, ) _MLTRADEMESSAGE_DATA_PERFORMATIVE = _descriptor.Descriptor( name="Data_Performative", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Data_Performative", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Data_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="terms", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Data_Performative.terms", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Data_Performative.terms", index=0, number=1, type=11, @@ -323,7 +323,7 @@ ), _descriptor.FieldDescriptor( name="payload", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.Data_Performative.payload", + full_name="aea.fetchai.ml_trade.MlTradeMessage.Data_Performative.payload", index=1, number=2, type=12, @@ -348,20 +348,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=873, - serialized_end=982, + serialized_start=801, + serialized_end=902, ) _MLTRADEMESSAGE = _descriptor.Descriptor( name="MlTradeMessage", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage", + full_name="aea.fetchai.ml_trade.MlTradeMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="accept", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.accept", + full_name="aea.fetchai.ml_trade.MlTradeMessage.accept", index=0, number=5, type=11, @@ -379,7 +379,7 @@ ), _descriptor.FieldDescriptor( name="cfp", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.cfp", + full_name="aea.fetchai.ml_trade.MlTradeMessage.cfp", index=1, number=6, type=11, @@ -397,7 +397,7 @@ ), _descriptor.FieldDescriptor( name="data", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.data", + full_name="aea.fetchai.ml_trade.MlTradeMessage.data", index=2, number=7, type=11, @@ -415,7 +415,7 @@ ), _descriptor.FieldDescriptor( name="terms", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.terms", + full_name="aea.fetchai.ml_trade.MlTradeMessage.terms", index=3, number=8, type=11, @@ -449,14 +449,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.ml_trade.MlTradeMessage.performative", + full_name="aea.fetchai.ml_trade.MlTradeMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=49, - serialized_end=998, + serialized_start=41, + serialized_end=918, ) _MLTRADEMESSAGE_DESCRIPTION.containing_type = _MLTRADEMESSAGE @@ -544,7 +544,7 @@ dict( DESCRIPTOR=_MLTRADEMESSAGE_DESCRIPTION, __module__="ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Description) + # @@protoc_insertion_point(class_scope:aea.fetchai.ml_trade.MlTradeMessage.Description) ), ), Query=_reflection.GeneratedProtocolMessageType( @@ -557,12 +557,12 @@ dict( DESCRIPTOR=_MLTRADEMESSAGE_QUERY_NOTHING, __module__="ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query.Nothing) + # @@protoc_insertion_point(class_scope:aea.fetchai.ml_trade.MlTradeMessage.Query.Nothing) ), ), DESCRIPTOR=_MLTRADEMESSAGE_QUERY, __module__="ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Query) + # @@protoc_insertion_point(class_scope:aea.fetchai.ml_trade.MlTradeMessage.Query) ), ), Cfp_Performative=_reflection.GeneratedProtocolMessageType( @@ -571,7 +571,7 @@ dict( DESCRIPTOR=_MLTRADEMESSAGE_CFP_PERFORMATIVE, __module__="ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Cfp_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ml_trade.MlTradeMessage.Cfp_Performative) ), ), Terms_Performative=_reflection.GeneratedProtocolMessageType( @@ -580,7 +580,7 @@ dict( DESCRIPTOR=_MLTRADEMESSAGE_TERMS_PERFORMATIVE, __module__="ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Terms_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ml_trade.MlTradeMessage.Terms_Performative) ), ), Accept_Performative=_reflection.GeneratedProtocolMessageType( @@ -589,7 +589,7 @@ dict( DESCRIPTOR=_MLTRADEMESSAGE_ACCEPT_PERFORMATIVE, __module__="ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ml_trade.MlTradeMessage.Accept_Performative) ), ), Data_Performative=_reflection.GeneratedProtocolMessageType( @@ -598,12 +598,12 @@ dict( DESCRIPTOR=_MLTRADEMESSAGE_DATA_PERFORMATIVE, __module__="ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage.Data_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.ml_trade.MlTradeMessage.Data_Performative) ), ), DESCRIPTOR=_MLTRADEMESSAGE, __module__="ml_trade_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.ml_trade.MlTradeMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.ml_trade.MlTradeMessage) ), ) _sym_db.RegisterMessage(MlTradeMessage) diff --git a/packages/fetchai/protocols/ml_trade/protocol.yaml b/packages/fetchai/protocols/ml_trade/protocol.yaml index 0593cf1ffe..91dbcdf221 100644 --- a/packages/fetchai/protocols/ml_trade/protocol.yaml +++ b/packages/fetchai/protocols/ml_trade/protocol.yaml @@ -11,8 +11,8 @@ fingerprint: custom_types.py: QmPa6mxbN8WShsniQxJACfzAPRjGzYLbUFGoVU4N9DewUw dialogues.py: QmVvP34aKWEtHrKmccNMvEdDnx5B7xpE5aEGzr6GU2u8UK message.py: QmZdRAScKbmJgKVbRJvDyMUNfRZKWCwWFYjGNDDBAq5fUT - ml_trade.proto: QmWzG9xmAQiuAj7sphQ8BzRUPXs7xagNWMzNw84Pfc7kq9 - ml_trade_pb2.py: QmNyzB6eJXYPwTptFLHguYW9NJLEMCSFE5rorY1xn9mmPF + ml_trade.proto: QmXqDTBhno2kMLdAbNiZWcAHpjiJ95qXL4doUnhdmCNkhk + ml_trade_pb2.py: QmU1MrfXLsJMo91yenRNTdnGFUA9UDcxJsayHYqHN2uwjp serialization.py: QmTfLdYfJnA8VTxtat5vgsfms7dJJF4zwuxYGxh9pDRALr fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/oef_search/oef_search.proto b/packages/fetchai/protocols/oef_search/oef_search.proto index a151f46439..d81fe28981 100644 --- a/packages/fetchai/protocols/oef_search/oef_search.proto +++ b/packages/fetchai/protocols/oef_search/oef_search.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.oef_search; +package aea.fetchai.oef_search; message OefSearchMessage{ diff --git a/packages/fetchai/protocols/oef_search/oef_search_pb2.py b/packages/fetchai/protocols/oef_search/oef_search_pb2.py index a00c221d78..cdc2e74e5b 100644 --- a/packages/fetchai/protocols/oef_search/oef_search_pb2.py +++ b/packages/fetchai/protocols/oef_search/oef_search_pb2.py @@ -16,18 +16,18 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="oef_search.proto", - package="fetchai.aea.fetchai.oef_search", + package="aea.fetchai.oef_search", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\x10oef_search.proto\x12\x1e\x66\x65tchai.aea.fetchai.oef_search"\xb9\r\n\x10OefSearchMessage\x12\\\n\toef_error\x18\x05 \x01(\x0b\x32G.fetchai.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_PerformativeH\x00\x12j\n\x10register_service\x18\x06 \x01(\x0b\x32N.fetchai.aea.fetchai.oef_search.OefSearchMessage.Register_Service_PerformativeH\x00\x12\x64\n\rsearch_result\x18\x07 \x01(\x0b\x32K.fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_PerformativeH\x00\x12h\n\x0fsearch_services\x18\x08 \x01(\x0b\x32M.fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Services_PerformativeH\x00\x12X\n\x07success\x18\t \x01(\x0b\x32\x45.fetchai.aea.fetchai.oef_search.OefSearchMessage.Success_PerformativeH\x00\x12n\n\x12unregister_service\x18\n \x01(\x0b\x32P.fetchai.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_PerformativeH\x00\x1a!\n\nAgentsInfo\x12\x13\n\x0b\x61gents_info\x18\x01 \x01(\x0c\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\xdc\x01\n\x11OefErrorOperation\x12\x62\n\toef_error\x18\x01 \x01(\x0e\x32O.fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.OefErrorEnum"c\n\x0cOefErrorEnum\x12\x14\n\x10REGISTER_SERVICE\x10\x00\x12\x16\n\x12UNREGISTER_SERVICE\x10\x01\x12\x13\n\x0fSEARCH_SERVICES\x10\x02\x12\x10\n\x0cSEND_MESSAGE\x10\x03\x1a\x96\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12Q\n\x07nothing\x18\x02 \x01(\x0b\x32>.fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1az\n\x1dRegister_Service_Performative\x12Y\n\x13service_description\x18\x01 \x01(\x0b\x32<.fetchai.aea.fetchai.oef_search.OefSearchMessage.Description\x1a|\n\x1fUnregister_Service_Performative\x12Y\n\x13service_description\x18\x01 \x01(\x0b\x32<.fetchai.aea.fetchai.oef_search.OefSearchMessage.Description\x1a\x65\n\x1cSearch_Services_Performative\x12\x45\n\x05query\x18\x01 \x01(\x0b\x32\x36.fetchai.aea.fetchai.oef_search.OefSearchMessage.Query\x1a~\n\x1aSearch_Result_Performative\x12\x0e\n\x06\x61gents\x18\x01 \x03(\t\x12P\n\x0b\x61gents_info\x18\x02 \x01(\x0b\x32;.fetchai.aea.fetchai.oef_search.OefSearchMessage.AgentsInfo\x1a\x16\n\x14Success_Performative\x1ay\n\x16Oef_Error_Performative\x12_\n\x13oef_error_operation\x18\x01 \x01(\x0b\x32\x42.fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperationB\x0e\n\x0cperformativeb\x06proto3' + '\n\x10oef_search.proto\x12\x16\x61\x65\x61.fetchai.oef_search"\xd1\x0c\n\x10OefSearchMessage\x12T\n\toef_error\x18\x05 \x01(\x0b\x32?.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_PerformativeH\x00\x12\x62\n\x10register_service\x18\x06 \x01(\x0b\x32\x46.aea.fetchai.oef_search.OefSearchMessage.Register_Service_PerformativeH\x00\x12\\\n\rsearch_result\x18\x07 \x01(\x0b\x32\x43.aea.fetchai.oef_search.OefSearchMessage.Search_Result_PerformativeH\x00\x12`\n\x0fsearch_services\x18\x08 \x01(\x0b\x32\x45.aea.fetchai.oef_search.OefSearchMessage.Search_Services_PerformativeH\x00\x12P\n\x07success\x18\t \x01(\x0b\x32=.aea.fetchai.oef_search.OefSearchMessage.Success_PerformativeH\x00\x12\x66\n\x12unregister_service\x18\n \x01(\x0b\x32H.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_PerformativeH\x00\x1a!\n\nAgentsInfo\x12\x13\n\x0b\x61gents_info\x18\x01 \x01(\x0c\x1a"\n\x0b\x44\x65scription\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\x0c\x1a\xd4\x01\n\x11OefErrorOperation\x12Z\n\toef_error\x18\x01 \x01(\x0e\x32G.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.OefErrorEnum"c\n\x0cOefErrorEnum\x12\x14\n\x10REGISTER_SERVICE\x10\x00\x12\x16\n\x12UNREGISTER_SERVICE\x10\x01\x12\x13\n\x0fSEARCH_SERVICES\x10\x02\x12\x10\n\x0cSEND_MESSAGE\x10\x03\x1a\x8e\x01\n\x05Query\x12\x0f\n\x05\x62ytes\x18\x01 \x01(\x0cH\x00\x12I\n\x07nothing\x18\x02 \x01(\x0b\x32\x36.aea.fetchai.oef_search.OefSearchMessage.Query.NothingH\x00\x12\x15\n\x0bquery_bytes\x18\x03 \x01(\x0cH\x00\x1a\t\n\x07NothingB\x07\n\x05query\x1ar\n\x1dRegister_Service_Performative\x12Q\n\x13service_description\x18\x01 \x01(\x0b\x32\x34.aea.fetchai.oef_search.OefSearchMessage.Description\x1at\n\x1fUnregister_Service_Performative\x12Q\n\x13service_description\x18\x01 \x01(\x0b\x32\x34.aea.fetchai.oef_search.OefSearchMessage.Description\x1a]\n\x1cSearch_Services_Performative\x12=\n\x05query\x18\x01 \x01(\x0b\x32..aea.fetchai.oef_search.OefSearchMessage.Query\x1av\n\x1aSearch_Result_Performative\x12\x0e\n\x06\x61gents\x18\x01 \x03(\t\x12H\n\x0b\x61gents_info\x18\x02 \x01(\x0b\x32\x33.aea.fetchai.oef_search.OefSearchMessage.AgentsInfo\x1a\x16\n\x14Success_Performative\x1aq\n\x16Oef_Error_Performative\x12W\n\x13oef_error_operation\x18\x01 \x01(\x0b\x32:.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperationB\x0e\n\x0cperformativeb\x06proto3' ), ) _OEFSEARCHMESSAGE_OEFERROROPERATION_OEFERRORENUM = _descriptor.EnumDescriptor( name="OefErrorEnum", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.OefErrorEnum", + full_name="aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.OefErrorEnum", filename=None, file=DESCRIPTOR, values=[ @@ -58,22 +58,22 @@ ], containing_type=None, serialized_options=None, - serialized_start=878, - serialized_end=977, + serialized_start=814, + serialized_end=913, ) _sym_db.RegisterEnumDescriptor(_OEFSEARCHMESSAGE_OEFERROROPERATION_OEFERRORENUM) _OEFSEARCHMESSAGE_AGENTSINFO = _descriptor.Descriptor( name="AgentsInfo", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.AgentsInfo", + full_name="aea.fetchai.oef_search.OefSearchMessage.AgentsInfo", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="agents_info", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.AgentsInfo.agents_info", + full_name="aea.fetchai.oef_search.OefSearchMessage.AgentsInfo.agents_info", index=0, number=1, type=12, @@ -98,20 +98,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=685, - serialized_end=718, + serialized_start=629, + serialized_end=662, ) _OEFSEARCHMESSAGE_DESCRIPTION = _descriptor.Descriptor( name="Description", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Description", + full_name="aea.fetchai.oef_search.OefSearchMessage.Description", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="description", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Description.description", + full_name="aea.fetchai.oef_search.OefSearchMessage.Description.description", index=0, number=1, type=12, @@ -136,20 +136,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=720, - serialized_end=754, + serialized_start=664, + serialized_end=698, ) _OEFSEARCHMESSAGE_OEFERROROPERATION = _descriptor.Descriptor( name="OefErrorOperation", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation", + full_name="aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="oef_error", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.oef_error", + full_name="aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation.oef_error", index=0, number=1, type=14, @@ -174,13 +174,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=757, - serialized_end=977, + serialized_start=701, + serialized_end=913, ) _OEFSEARCHMESSAGE_QUERY_NOTHING = _descriptor.Descriptor( name="Nothing", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.Nothing", + full_name="aea.fetchai.oef_search.OefSearchMessage.Query.Nothing", filename=None, file=DESCRIPTOR, containing_type=None, @@ -193,20 +193,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1112, - serialized_end=1121, + serialized_start=1040, + serialized_end=1049, ) _OEFSEARCHMESSAGE_QUERY = _descriptor.Descriptor( name="Query", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query", + full_name="aea.fetchai.oef_search.OefSearchMessage.Query", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="bytes", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.bytes", + full_name="aea.fetchai.oef_search.OefSearchMessage.Query.bytes", index=0, number=1, type=12, @@ -224,7 +224,7 @@ ), _descriptor.FieldDescriptor( name="nothing", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.nothing", + full_name="aea.fetchai.oef_search.OefSearchMessage.Query.nothing", index=1, number=2, type=11, @@ -242,7 +242,7 @@ ), _descriptor.FieldDescriptor( name="query_bytes", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.query_bytes", + full_name="aea.fetchai.oef_search.OefSearchMessage.Query.query_bytes", index=2, number=3, type=12, @@ -269,26 +269,26 @@ oneofs=[ _descriptor.OneofDescriptor( name="query", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.query", + full_name="aea.fetchai.oef_search.OefSearchMessage.Query.query", index=0, containing_type=None, fields=[], ), ], - serialized_start=980, - serialized_end=1130, + serialized_start=916, + serialized_end=1058, ) _OEFSEARCHMESSAGE_REGISTER_SERVICE_PERFORMATIVE = _descriptor.Descriptor( name="Register_Service_Performative", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Register_Service_Performative", + full_name="aea.fetchai.oef_search.OefSearchMessage.Register_Service_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="service_description", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Register_Service_Performative.service_description", + full_name="aea.fetchai.oef_search.OefSearchMessage.Register_Service_Performative.service_description", index=0, number=1, type=11, @@ -313,20 +313,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1132, - serialized_end=1254, + serialized_start=1060, + serialized_end=1174, ) _OEFSEARCHMESSAGE_UNREGISTER_SERVICE_PERFORMATIVE = _descriptor.Descriptor( name="Unregister_Service_Performative", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_Performative", + full_name="aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="service_description", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_Performative.service_description", + full_name="aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_Performative.service_description", index=0, number=1, type=11, @@ -351,20 +351,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1256, - serialized_end=1380, + serialized_start=1176, + serialized_end=1292, ) _OEFSEARCHMESSAGE_SEARCH_SERVICES_PERFORMATIVE = _descriptor.Descriptor( name="Search_Services_Performative", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Services_Performative", + full_name="aea.fetchai.oef_search.OefSearchMessage.Search_Services_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="query", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Services_Performative.query", + full_name="aea.fetchai.oef_search.OefSearchMessage.Search_Services_Performative.query", index=0, number=1, type=11, @@ -389,20 +389,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1382, - serialized_end=1483, + serialized_start=1294, + serialized_end=1387, ) _OEFSEARCHMESSAGE_SEARCH_RESULT_PERFORMATIVE = _descriptor.Descriptor( name="Search_Result_Performative", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative", + full_name="aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="agents", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative.agents", + full_name="aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative.agents", index=0, number=1, type=9, @@ -420,7 +420,7 @@ ), _descriptor.FieldDescriptor( name="agents_info", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative.agents_info", + full_name="aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative.agents_info", index=1, number=2, type=11, @@ -445,13 +445,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1485, - serialized_end=1611, + serialized_start=1389, + serialized_end=1507, ) _OEFSEARCHMESSAGE_SUCCESS_PERFORMATIVE = _descriptor.Descriptor( name="Success_Performative", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Success_Performative", + full_name="aea.fetchai.oef_search.OefSearchMessage.Success_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -464,20 +464,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1613, - serialized_end=1635, + serialized_start=1509, + serialized_end=1531, ) _OEFSEARCHMESSAGE_OEF_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Oef_Error_Performative", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_Performative", + full_name="aea.fetchai.oef_search.OefSearchMessage.Oef_Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="oef_error_operation", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_Performative.oef_error_operation", + full_name="aea.fetchai.oef_search.OefSearchMessage.Oef_Error_Performative.oef_error_operation", index=0, number=1, type=11, @@ -502,20 +502,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1637, - serialized_end=1758, + serialized_start=1533, + serialized_end=1646, ) _OEFSEARCHMESSAGE = _descriptor.Descriptor( name="OefSearchMessage", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage", + full_name="aea.fetchai.oef_search.OefSearchMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="oef_error", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.oef_error", + full_name="aea.fetchai.oef_search.OefSearchMessage.oef_error", index=0, number=5, type=11, @@ -533,7 +533,7 @@ ), _descriptor.FieldDescriptor( name="register_service", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.register_service", + full_name="aea.fetchai.oef_search.OefSearchMessage.register_service", index=1, number=6, type=11, @@ -551,7 +551,7 @@ ), _descriptor.FieldDescriptor( name="search_result", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.search_result", + full_name="aea.fetchai.oef_search.OefSearchMessage.search_result", index=2, number=7, type=11, @@ -569,7 +569,7 @@ ), _descriptor.FieldDescriptor( name="search_services", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.search_services", + full_name="aea.fetchai.oef_search.OefSearchMessage.search_services", index=3, number=8, type=11, @@ -587,7 +587,7 @@ ), _descriptor.FieldDescriptor( name="success", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.success", + full_name="aea.fetchai.oef_search.OefSearchMessage.success", index=4, number=9, type=11, @@ -605,7 +605,7 @@ ), _descriptor.FieldDescriptor( name="unregister_service", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.unregister_service", + full_name="aea.fetchai.oef_search.OefSearchMessage.unregister_service", index=5, number=10, type=11, @@ -643,14 +643,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.oef_search.OefSearchMessage.performative", + full_name="aea.fetchai.oef_search.OefSearchMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=53, - serialized_end=1774, + serialized_start=45, + serialized_end=1662, ) _OEFSEARCHMESSAGE_AGENTSINFO.containing_type = _OEFSEARCHMESSAGE @@ -773,7 +773,7 @@ dict( DESCRIPTOR=_OEFSEARCHMESSAGE_AGENTSINFO, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.AgentsInfo) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.AgentsInfo) ), ), Description=_reflection.GeneratedProtocolMessageType( @@ -782,7 +782,7 @@ dict( DESCRIPTOR=_OEFSEARCHMESSAGE_DESCRIPTION, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Description) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.Description) ), ), OefErrorOperation=_reflection.GeneratedProtocolMessageType( @@ -791,7 +791,7 @@ dict( DESCRIPTOR=_OEFSEARCHMESSAGE_OEFERROROPERATION, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.OefErrorOperation) ), ), Query=_reflection.GeneratedProtocolMessageType( @@ -804,12 +804,12 @@ dict( DESCRIPTOR=_OEFSEARCHMESSAGE_QUERY_NOTHING, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Query.Nothing) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.Query.Nothing) ), ), DESCRIPTOR=_OEFSEARCHMESSAGE_QUERY, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Query) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.Query) ), ), Register_Service_Performative=_reflection.GeneratedProtocolMessageType( @@ -818,7 +818,7 @@ dict( DESCRIPTOR=_OEFSEARCHMESSAGE_REGISTER_SERVICE_PERFORMATIVE, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Register_Service_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.Register_Service_Performative) ), ), Unregister_Service_Performative=_reflection.GeneratedProtocolMessageType( @@ -827,7 +827,7 @@ dict( DESCRIPTOR=_OEFSEARCHMESSAGE_UNREGISTER_SERVICE_PERFORMATIVE, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.Unregister_Service_Performative) ), ), Search_Services_Performative=_reflection.GeneratedProtocolMessageType( @@ -836,7 +836,7 @@ dict( DESCRIPTOR=_OEFSEARCHMESSAGE_SEARCH_SERVICES_PERFORMATIVE, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Services_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.Search_Services_Performative) ), ), Search_Result_Performative=_reflection.GeneratedProtocolMessageType( @@ -845,7 +845,7 @@ dict( DESCRIPTOR=_OEFSEARCHMESSAGE_SEARCH_RESULT_PERFORMATIVE, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.Search_Result_Performative) ), ), Success_Performative=_reflection.GeneratedProtocolMessageType( @@ -854,7 +854,7 @@ dict( DESCRIPTOR=_OEFSEARCHMESSAGE_SUCCESS_PERFORMATIVE, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Success_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.Success_Performative) ), ), Oef_Error_Performative=_reflection.GeneratedProtocolMessageType( @@ -863,12 +863,12 @@ dict( DESCRIPTOR=_OEFSEARCHMESSAGE_OEF_ERROR_PERFORMATIVE, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage.Oef_Error_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage.Oef_Error_Performative) ), ), DESCRIPTOR=_OEFSEARCHMESSAGE, __module__="oef_search_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.oef_search.OefSearchMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.oef_search.OefSearchMessage) ), ) _sym_db.RegisterMessage(OefSearchMessage) diff --git a/packages/fetchai/protocols/oef_search/protocol.yaml b/packages/fetchai/protocols/oef_search/protocol.yaml index 57d1a6fe0d..6c1fad7507 100644 --- a/packages/fetchai/protocols/oef_search/protocol.yaml +++ b/packages/fetchai/protocols/oef_search/protocol.yaml @@ -11,8 +11,8 @@ fingerprint: custom_types.py: QmPhg3DBpLYzjEuzjC9w9rZQnNwcmXG3k5ACmtdgmiUgwu dialogues.py: QmQPLnW3jAs6tLLmhkX4C7texGRHM9bfdjs83dUH5TkJ4v message.py: QmXj8MgvPtJKXZyhTnTfpXEZoAz4Z1u6wbMwMkKCRgvujL - oef_search.proto: QmSq22zt3zpiLyTTDzPo71QCCFebxpHgSKK1PWfo2cMNyh - oef_search_pb2.py: QmaEHK8KG6q2nkZA9i2fvGyHKGLhK85UZDenRD3ig5FUK8 + oef_search.proto: Qmc1g4vN9rk9N7PV2Zbp3HH8dXFPzrS3FoCuqZuH9anMWV + oef_search_pb2.py: QmW7p11p2uorNKAN2wK7zWvaHPkYk1scojzpLyLJzgT4m1 serialization.py: QmSZA26BK7zdb7rJ6Fkca2dVBjUaegM7vCrTtpGshssFPj fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/tac/protocol.yaml b/packages/fetchai/protocols/tac/protocol.yaml index 3bedb6f668..257b0eba06 100644 --- a/packages/fetchai/protocols/tac/protocol.yaml +++ b/packages/fetchai/protocols/tac/protocol.yaml @@ -13,8 +13,8 @@ fingerprint: dialogues.py: QmTxHrcGujP1RUYvfJygZyQoUwmDg2GBWfmbR3tWUSbyop message.py: QmfNdmYk3wssDJvHwMsMxXaiWCjm3fSH9Su4KmsYDZJoWg serialization.py: QmZYhkHa6wW5T4fSUSHar67C76ascfKLsevWEfkff3uVvU - tac.proto: QmdPn2Z4xiPuc16PPzd8NNsbRd95aEDbvfUm1FFjvZZcuy - tac_pb2.py: QmYDEdWMwpfDawJPf8rjwLnEwDjdT4KuyNwYS8kEC5swKy + tac.proto: QmUXk2kwqp1vo22oZdvLbWKirojeqkXdGSmiz6r14bMqSE + tac_pb2.py: QmQYbDoEWt4cthXQTLYozRTAb5CFWEDMFptfvryze2Reqa fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/tac/tac.proto b/packages/fetchai/protocols/tac/tac.proto index e35d12a7bd..df34ebd4a4 100644 --- a/packages/fetchai/protocols/tac/tac.proto +++ b/packages/fetchai/protocols/tac/tac.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.tac; +package aea.fetchai.tac; message TacMessage{ diff --git a/packages/fetchai/protocols/tac/tac_pb2.py b/packages/fetchai/protocols/tac/tac_pb2.py index 85a066c708..d2bcc5988b 100644 --- a/packages/fetchai/protocols/tac/tac_pb2.py +++ b/packages/fetchai/protocols/tac/tac_pb2.py @@ -16,18 +16,18 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="tac.proto", - package="fetchai.aea.fetchai.tac", + package="aea.fetchai.tac", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\ttac.proto\x12\x17\x66\x65tchai.aea.fetchai.tac"\x93 \n\nTacMessage\x12O\n\tcancelled\x18\x05 \x01(\x0b\x32:.fetchai.aea.fetchai.tac.TacMessage.Cancelled_PerformativeH\x00\x12O\n\tgame_data\x18\x06 \x01(\x0b\x32:.fetchai.aea.fetchai.tac.TacMessage.Game_Data_PerformativeH\x00\x12M\n\x08register\x18\x07 \x01(\x0b\x32\x39.fetchai.aea.fetchai.tac.TacMessage.Register_PerformativeH\x00\x12O\n\ttac_error\x18\x08 \x01(\x0b\x32:.fetchai.aea.fetchai.tac.TacMessage.Tac_Error_PerformativeH\x00\x12S\n\x0btransaction\x18\t \x01(\x0b\x32<.fetchai.aea.fetchai.tac.TacMessage.Transaction_PerformativeH\x00\x12m\n\x18transaction_confirmation\x18\n \x01(\x0b\x32I.fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_PerformativeH\x00\x12Q\n\nunregister\x18\x0b \x01(\x0b\x32;.fetchai.aea.fetchai.tac.TacMessage.Unregister_PerformativeH\x00\x1a\x8a\x03\n\tErrorCode\x12O\n\nerror_code\x18\x01 \x01(\x0e\x32;.fetchai.aea.fetchai.tac.TacMessage.ErrorCode.ErrorCodeEnum"\xab\x02\n\rErrorCodeEnum\x12\x11\n\rGENERIC_ERROR\x10\x00\x12\x15\n\x11REQUEST_NOT_VALID\x10\x01\x12!\n\x1d\x41GENT_ADDR_ALREADY_REGISTERED\x10\x02\x12!\n\x1d\x41GENT_NAME_ALREADY_REGISTERED\x10\x03\x12\x18\n\x14\x41GENT_NOT_REGISTERED\x10\x04\x12\x19\n\x15TRANSACTION_NOT_VALID\x10\x05\x12\x1c\n\x18TRANSACTION_NOT_MATCHING\x10\x06\x12\x1f\n\x1b\x41GENT_NAME_NOT_IN_WHITELIST\x10\x07\x12\x1b\n\x17\x43OMPETITION_NOT_RUNNING\x10\x08\x12\x19\n\x15\x44IALOGUE_INCONSISTENT\x10\t\x1a+\n\x15Register_Performative\x12\x12\n\nagent_name\x18\x01 \x01(\t\x1a\x19\n\x17Unregister_Performative\x1a\xcb\x05\n\x18Transaction_Performative\x12\x16\n\x0etransaction_id\x18\x01 \x01(\t\x12\x11\n\tledger_id\x18\x02 \x01(\t\x12\x16\n\x0esender_address\x18\x03 \x01(\t\x12\x1c\n\x14\x63ounterparty_address\x18\x04 \x01(\t\x12s\n\x15\x61mount_by_currency_id\x18\x05 \x03(\x0b\x32T.fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry\x12m\n\x12\x66\x65\x65_by_currency_id\x18\x06 \x03(\x0b\x32Q.fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry\x12s\n\x15quantities_by_good_id\x18\x07 \x03(\x0b\x32T.fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry\x12\r\n\x05nonce\x18\x08 \x01(\t\x12\x18\n\x10sender_signature\x18\t \x01(\t\x12\x1e\n\x16\x63ounterparty_signature\x18\n \x01(\t\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x36\n\x14\x46\x65\x65\x42yCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x18\n\x16\x43\x61ncelled_Performative\x1a\xac\x0c\n\x16Game_Data_Performative\x12q\n\x15\x61mount_by_currency_id\x18\x01 \x03(\x0b\x32R.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry\x12\x82\x01\n\x1e\x65xchange_params_by_currency_id\x18\x02 \x03(\x0b\x32Z.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry\x12q\n\x15quantities_by_good_id\x18\x03 \x03(\x0b\x32R.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry\x12x\n\x19utility_params_by_good_id\x18\x04 \x03(\x0b\x32U.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry\x12k\n\x12\x66\x65\x65_by_currency_id\x18\x05 \x03(\x0b\x32O.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry\x12k\n\x12\x61gent_addr_to_name\x18\x06 \x03(\x0b\x32O.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry\x12m\n\x13\x63urrency_id_to_name\x18\x07 \x03(\x0b\x32P.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry\x12\x65\n\x0fgood_id_to_name\x18\x08 \x03(\x0b\x32L.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry\x12\x12\n\nversion_id\x18\t \x01(\t\x12R\n\x04info\x18\n \x03(\x0b\x32\x44.fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry\x12\x13\n\x0binfo_is_set\x18\x0b \x01(\x08\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x41\n\x1f\x45xchangeParamsByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a<\n\x1aUtilityParamsByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x36\n\x14\x46\x65\x65\x42yCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x36\n\x14\x41gentAddrToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x37\n\x15\x43urrencyIdToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x33\n\x11GoodIdToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xbb\x03\n%Transaction_Confirmation_Performative\x12\x16\n\x0etransaction_id\x18\x01 \x01(\t\x12\x80\x01\n\x15\x61mount_by_currency_id\x18\x02 \x03(\x0b\x32\x61.fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry\x12\x80\x01\n\x15quantities_by_good_id\x18\x03 \x03(\x0b\x32\x61.fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\xf1\x01\n\x16Tac_Error_Performative\x12\x41\n\nerror_code\x18\x01 \x01(\x0b\x32-.fetchai.aea.fetchai.tac.TacMessage.ErrorCode\x12R\n\x04info\x18\x02 \x03(\x0b\x32\x44.fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry\x12\x13\n\x0binfo_is_set\x18\x03 \x01(\x08\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' + '\n\ttac.proto\x12\x0f\x61\x65\x61.fetchai.tac"\xd0\x1e\n\nTacMessage\x12G\n\tcancelled\x18\x05 \x01(\x0b\x32\x32.aea.fetchai.tac.TacMessage.Cancelled_PerformativeH\x00\x12G\n\tgame_data\x18\x06 \x01(\x0b\x32\x32.aea.fetchai.tac.TacMessage.Game_Data_PerformativeH\x00\x12\x45\n\x08register\x18\x07 \x01(\x0b\x32\x31.aea.fetchai.tac.TacMessage.Register_PerformativeH\x00\x12G\n\ttac_error\x18\x08 \x01(\x0b\x32\x32.aea.fetchai.tac.TacMessage.Tac_Error_PerformativeH\x00\x12K\n\x0btransaction\x18\t \x01(\x0b\x32\x34.aea.fetchai.tac.TacMessage.Transaction_PerformativeH\x00\x12\x65\n\x18transaction_confirmation\x18\n \x01(\x0b\x32\x41.aea.fetchai.tac.TacMessage.Transaction_Confirmation_PerformativeH\x00\x12I\n\nunregister\x18\x0b \x01(\x0b\x32\x33.aea.fetchai.tac.TacMessage.Unregister_PerformativeH\x00\x1a\x82\x03\n\tErrorCode\x12G\n\nerror_code\x18\x01 \x01(\x0e\x32\x33.aea.fetchai.tac.TacMessage.ErrorCode.ErrorCodeEnum"\xab\x02\n\rErrorCodeEnum\x12\x11\n\rGENERIC_ERROR\x10\x00\x12\x15\n\x11REQUEST_NOT_VALID\x10\x01\x12!\n\x1d\x41GENT_ADDR_ALREADY_REGISTERED\x10\x02\x12!\n\x1d\x41GENT_NAME_ALREADY_REGISTERED\x10\x03\x12\x18\n\x14\x41GENT_NOT_REGISTERED\x10\x04\x12\x19\n\x15TRANSACTION_NOT_VALID\x10\x05\x12\x1c\n\x18TRANSACTION_NOT_MATCHING\x10\x06\x12\x1f\n\x1b\x41GENT_NAME_NOT_IN_WHITELIST\x10\x07\x12\x1b\n\x17\x43OMPETITION_NOT_RUNNING\x10\x08\x12\x19\n\x15\x44IALOGUE_INCONSISTENT\x10\t\x1a+\n\x15Register_Performative\x12\x12\n\nagent_name\x18\x01 \x01(\t\x1a\x19\n\x17Unregister_Performative\x1a\xb3\x05\n\x18Transaction_Performative\x12\x16\n\x0etransaction_id\x18\x01 \x01(\t\x12\x11\n\tledger_id\x18\x02 \x01(\t\x12\x16\n\x0esender_address\x18\x03 \x01(\t\x12\x1c\n\x14\x63ounterparty_address\x18\x04 \x01(\t\x12k\n\x15\x61mount_by_currency_id\x18\x05 \x03(\x0b\x32L.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry\x12\x65\n\x12\x66\x65\x65_by_currency_id\x18\x06 \x03(\x0b\x32I.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry\x12k\n\x15quantities_by_good_id\x18\x07 \x03(\x0b\x32L.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry\x12\r\n\x05nonce\x18\x08 \x01(\t\x12\x18\n\x10sender_signature\x18\t \x01(\t\x12\x1e\n\x16\x63ounterparty_signature\x18\n \x01(\t\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x36\n\x14\x46\x65\x65\x42yCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x18\n\x16\x43\x61ncelled_Performative\x1a\xe3\x0b\n\x16Game_Data_Performative\x12i\n\x15\x61mount_by_currency_id\x18\x01 \x03(\x0b\x32J.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry\x12z\n\x1e\x65xchange_params_by_currency_id\x18\x02 \x03(\x0b\x32R.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry\x12i\n\x15quantities_by_good_id\x18\x03 \x03(\x0b\x32J.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry\x12p\n\x19utility_params_by_good_id\x18\x04 \x03(\x0b\x32M.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry\x12\x63\n\x12\x66\x65\x65_by_currency_id\x18\x05 \x03(\x0b\x32G.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry\x12\x63\n\x12\x61gent_addr_to_name\x18\x06 \x03(\x0b\x32G.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry\x12\x65\n\x13\x63urrency_id_to_name\x18\x07 \x03(\x0b\x32H.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry\x12]\n\x0fgood_id_to_name\x18\x08 \x03(\x0b\x32\x44.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry\x12\x12\n\nversion_id\x18\t \x01(\t\x12J\n\x04info\x18\n \x03(\x0b\x32<.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry\x12\x13\n\x0binfo_is_set\x18\x0b \x01(\x08\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x41\n\x1f\x45xchangeParamsByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a<\n\x1aUtilityParamsByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x36\n\x14\x46\x65\x65\x42yCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x36\n\x14\x41gentAddrToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x37\n\x15\x43urrencyIdToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x33\n\x11GoodIdToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xa9\x03\n%Transaction_Confirmation_Performative\x12\x16\n\x0etransaction_id\x18\x01 \x01(\t\x12x\n\x15\x61mount_by_currency_id\x18\x02 \x03(\x0b\x32Y.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry\x12x\n\x15quantities_by_good_id\x18\x03 \x03(\x0b\x32Y.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry\x1a\x39\n\x17\x41mountByCurrencyIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x39\n\x17QuantitiesByGoodIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\xe1\x01\n\x16Tac_Error_Performative\x12\x39\n\nerror_code\x18\x01 \x01(\x0b\x32%.aea.fetchai.tac.TacMessage.ErrorCode\x12J\n\x04info\x18\x02 \x03(\x0b\x32<.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry\x12\x13\n\x0binfo_is_set\x18\x03 \x01(\x08\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0cperformativeb\x06proto3' ), ) _TACMESSAGE_ERRORCODE_ERRORCODEENUM = _descriptor.EnumDescriptor( name="ErrorCodeEnum", - full_name="fetchai.aea.fetchai.tac.TacMessage.ErrorCode.ErrorCodeEnum", + full_name="aea.fetchai.tac.TacMessage.ErrorCode.ErrorCodeEnum", filename=None, file=DESCRIPTOR, values=[ @@ -100,22 +100,22 @@ ], containing_type=None, serialized_options=None, - serialized_start=750, - serialized_end=1049, + serialized_start=678, + serialized_end=977, ) _sym_db.RegisterEnumDescriptor(_TACMESSAGE_ERRORCODE_ERRORCODEENUM) _TACMESSAGE_ERRORCODE = _descriptor.Descriptor( name="ErrorCode", - full_name="fetchai.aea.fetchai.tac.TacMessage.ErrorCode", + full_name="aea.fetchai.tac.TacMessage.ErrorCode", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetchai.aea.fetchai.tac.TacMessage.ErrorCode.error_code", + full_name="aea.fetchai.tac.TacMessage.ErrorCode.error_code", index=0, number=1, type=14, @@ -140,20 +140,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=655, - serialized_end=1049, + serialized_start=591, + serialized_end=977, ) _TACMESSAGE_REGISTER_PERFORMATIVE = _descriptor.Descriptor( name="Register_Performative", - full_name="fetchai.aea.fetchai.tac.TacMessage.Register_Performative", + full_name="aea.fetchai.tac.TacMessage.Register_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="agent_name", - full_name="fetchai.aea.fetchai.tac.TacMessage.Register_Performative.agent_name", + full_name="aea.fetchai.tac.TacMessage.Register_Performative.agent_name", index=0, number=1, type=9, @@ -178,13 +178,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1051, - serialized_end=1094, + serialized_start=979, + serialized_end=1022, ) _TACMESSAGE_UNREGISTER_PERFORMATIVE = _descriptor.Descriptor( name="Unregister_Performative", - full_name="fetchai.aea.fetchai.tac.TacMessage.Unregister_Performative", + full_name="aea.fetchai.tac.TacMessage.Unregister_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -197,20 +197,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1096, - serialized_end=1121, + serialized_start=1024, + serialized_end=1049, ) _TACMESSAGE_TRANSACTION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _descriptor.Descriptor( name="AmountByCurrencyIdEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry.key", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry.key", index=0, number=1, type=9, @@ -228,7 +228,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry.value", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -253,20 +253,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1667, - serialized_end=1724, + serialized_start=1571, + serialized_end=1628, ) _TACMESSAGE_TRANSACTION_PERFORMATIVE_FEEBYCURRENCYIDENTRY = _descriptor.Descriptor( name="FeeByCurrencyIdEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry.key", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry.key", index=0, number=1, type=9, @@ -284,7 +284,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry.value", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -309,20 +309,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1726, - serialized_end=1780, + serialized_start=1630, + serialized_end=1684, ) _TACMESSAGE_TRANSACTION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _descriptor.Descriptor( name="QuantitiesByGoodIdEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry.key", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry.key", index=0, number=1, type=9, @@ -340,7 +340,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry.value", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry.value", index=1, number=2, type=5, @@ -365,20 +365,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1782, - serialized_end=1839, + serialized_start=1686, + serialized_end=1743, ) _TACMESSAGE_TRANSACTION_PERFORMATIVE = _descriptor.Descriptor( name="Transaction_Performative", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.transaction_id", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.transaction_id", index=0, number=1, type=9, @@ -396,7 +396,7 @@ ), _descriptor.FieldDescriptor( name="ledger_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.ledger_id", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.ledger_id", index=1, number=2, type=9, @@ -414,7 +414,7 @@ ), _descriptor.FieldDescriptor( name="sender_address", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.sender_address", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.sender_address", index=2, number=3, type=9, @@ -432,7 +432,7 @@ ), _descriptor.FieldDescriptor( name="counterparty_address", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.counterparty_address", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.counterparty_address", index=3, number=4, type=9, @@ -450,7 +450,7 @@ ), _descriptor.FieldDescriptor( name="amount_by_currency_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.amount_by_currency_id", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.amount_by_currency_id", index=4, number=5, type=11, @@ -468,7 +468,7 @@ ), _descriptor.FieldDescriptor( name="fee_by_currency_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.fee_by_currency_id", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.fee_by_currency_id", index=5, number=6, type=11, @@ -486,7 +486,7 @@ ), _descriptor.FieldDescriptor( name="quantities_by_good_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.quantities_by_good_id", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.quantities_by_good_id", index=6, number=7, type=11, @@ -504,7 +504,7 @@ ), _descriptor.FieldDescriptor( name="nonce", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.nonce", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.nonce", index=7, number=8, type=9, @@ -522,7 +522,7 @@ ), _descriptor.FieldDescriptor( name="sender_signature", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.sender_signature", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.sender_signature", index=8, number=9, type=9, @@ -540,7 +540,7 @@ ), _descriptor.FieldDescriptor( name="counterparty_signature", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.counterparty_signature", + full_name="aea.fetchai.tac.TacMessage.Transaction_Performative.counterparty_signature", index=9, number=10, type=9, @@ -569,13 +569,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1124, - serialized_end=1839, + serialized_start=1052, + serialized_end=1743, ) _TACMESSAGE_CANCELLED_PERFORMATIVE = _descriptor.Descriptor( name="Cancelled_Performative", - full_name="fetchai.aea.fetchai.tac.TacMessage.Cancelled_Performative", + full_name="aea.fetchai.tac.TacMessage.Cancelled_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -588,20 +588,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1841, - serialized_end=1865, + serialized_start=1745, + serialized_end=1769, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _descriptor.Descriptor( name="AmountByCurrencyIdEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry.key", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry.key", index=0, number=1, type=9, @@ -619,7 +619,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry.value", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -644,20 +644,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1667, - serialized_end=1724, + serialized_start=1571, + serialized_end=1628, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY = _descriptor.Descriptor( name="ExchangeParamsByCurrencyIdEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry.key", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry.key", index=0, number=1, type=9, @@ -675,7 +675,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry.value", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry.value", index=1, number=2, type=2, @@ -700,20 +700,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=2995, - serialized_end=3060, + serialized_start=2826, + serialized_end=2891, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _descriptor.Descriptor( name="QuantitiesByGoodIdEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry.key", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry.key", index=0, number=1, type=9, @@ -731,7 +731,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry.value", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry.value", index=1, number=2, type=5, @@ -756,20 +756,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1782, - serialized_end=1839, + serialized_start=1686, + serialized_end=1743, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY = _descriptor.Descriptor( name="UtilityParamsByGoodIdEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry.key", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry.key", index=0, number=1, type=9, @@ -787,7 +787,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry.value", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry.value", index=1, number=2, type=2, @@ -812,20 +812,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3121, - serialized_end=3181, + serialized_start=2952, + serialized_end=3012, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_FEEBYCURRENCYIDENTRY = _descriptor.Descriptor( name="FeeByCurrencyIdEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry.key", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry.key", index=0, number=1, type=9, @@ -843,7 +843,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry.value", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -868,20 +868,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1726, - serialized_end=1780, + serialized_start=1630, + serialized_end=1684, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_AGENTADDRTONAMEENTRY = _descriptor.Descriptor( name="AgentAddrToNameEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry.key", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry.key", index=0, number=1, type=9, @@ -899,7 +899,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry.value", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry.value", index=1, number=2, type=9, @@ -924,20 +924,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3239, - serialized_end=3293, + serialized_start=3070, + serialized_end=3124, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_CURRENCYIDTONAMEENTRY = _descriptor.Descriptor( name="CurrencyIdToNameEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry.key", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry.key", index=0, number=1, type=9, @@ -955,7 +955,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry.value", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry.value", index=1, number=2, type=9, @@ -980,20 +980,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3295, - serialized_end=3350, + serialized_start=3126, + serialized_end=3181, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_GOODIDTONAMEENTRY = _descriptor.Descriptor( name="GoodIdToNameEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry.key", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry.key", index=0, number=1, type=9, @@ -1011,7 +1011,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry.value", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry.value", index=1, number=2, type=9, @@ -1036,20 +1036,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3352, - serialized_end=3403, + serialized_start=3183, + serialized_end=3234, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE_INFOENTRY = _descriptor.Descriptor( name="InfoEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry.key", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry.key", index=0, number=1, type=9, @@ -1067,7 +1067,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry.value", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry.value", index=1, number=2, type=9, @@ -1092,20 +1092,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3405, - serialized_end=3448, + serialized_start=3236, + serialized_end=3279, ) _TACMESSAGE_GAME_DATA_PERFORMATIVE = _descriptor.Descriptor( name="Game_Data_Performative", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="amount_by_currency_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.amount_by_currency_id", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.amount_by_currency_id", index=0, number=1, type=11, @@ -1123,7 +1123,7 @@ ), _descriptor.FieldDescriptor( name="exchange_params_by_currency_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.exchange_params_by_currency_id", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.exchange_params_by_currency_id", index=1, number=2, type=11, @@ -1141,7 +1141,7 @@ ), _descriptor.FieldDescriptor( name="quantities_by_good_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.quantities_by_good_id", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.quantities_by_good_id", index=2, number=3, type=11, @@ -1159,7 +1159,7 @@ ), _descriptor.FieldDescriptor( name="utility_params_by_good_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.utility_params_by_good_id", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.utility_params_by_good_id", index=3, number=4, type=11, @@ -1177,7 +1177,7 @@ ), _descriptor.FieldDescriptor( name="fee_by_currency_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.fee_by_currency_id", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.fee_by_currency_id", index=4, number=5, type=11, @@ -1195,7 +1195,7 @@ ), _descriptor.FieldDescriptor( name="agent_addr_to_name", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.agent_addr_to_name", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.agent_addr_to_name", index=5, number=6, type=11, @@ -1213,7 +1213,7 @@ ), _descriptor.FieldDescriptor( name="currency_id_to_name", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.currency_id_to_name", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.currency_id_to_name", index=6, number=7, type=11, @@ -1231,7 +1231,7 @@ ), _descriptor.FieldDescriptor( name="good_id_to_name", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.good_id_to_name", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.good_id_to_name", index=7, number=8, type=11, @@ -1249,7 +1249,7 @@ ), _descriptor.FieldDescriptor( name="version_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.version_id", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.version_id", index=8, number=9, type=9, @@ -1267,7 +1267,7 @@ ), _descriptor.FieldDescriptor( name="info", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.info", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.info", index=9, number=10, type=11, @@ -1285,7 +1285,7 @@ ), _descriptor.FieldDescriptor( name="info_is_set", - full_name="fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.info_is_set", + full_name="aea.fetchai.tac.TacMessage.Game_Data_Performative.info_is_set", index=10, number=11, type=8, @@ -1320,20 +1320,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1868, - serialized_end=3448, + serialized_start=1772, + serialized_end=3279, ) _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _descriptor.Descriptor( name="AmountByCurrencyIdEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry", + full_name="aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry.key", + full_name="aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry.key", index=0, number=1, type=9, @@ -1351,7 +1351,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry.value", + full_name="aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry.value", index=1, number=2, type=5, @@ -1376,20 +1376,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1667, - serialized_end=1724, + serialized_start=1571, + serialized_end=1628, ) _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _descriptor.Descriptor( name="QuantitiesByGoodIdEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry", + full_name="aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry.key", + full_name="aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry.key", index=0, number=1, type=9, @@ -1407,7 +1407,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry.value", + full_name="aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry.value", index=1, number=2, type=5, @@ -1432,20 +1432,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1782, - serialized_end=1839, + serialized_start=1686, + serialized_end=1743, ) _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE = _descriptor.Descriptor( name="Transaction_Confirmation_Performative", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative", + full_name="aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="transaction_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.transaction_id", + full_name="aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.transaction_id", index=0, number=1, type=9, @@ -1463,7 +1463,7 @@ ), _descriptor.FieldDescriptor( name="amount_by_currency_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.amount_by_currency_id", + full_name="aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.amount_by_currency_id", index=1, number=2, type=11, @@ -1481,7 +1481,7 @@ ), _descriptor.FieldDescriptor( name="quantities_by_good_id", - full_name="fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.quantities_by_good_id", + full_name="aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.quantities_by_good_id", index=2, number=3, type=11, @@ -1509,20 +1509,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3451, - serialized_end=3894, + serialized_start=3282, + serialized_end=3707, ) _TACMESSAGE_TAC_ERROR_PERFORMATIVE_INFOENTRY = _descriptor.Descriptor( name="InfoEntry", - full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry", + full_name="aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry.key", + full_name="aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry.key", index=0, number=1, type=9, @@ -1540,7 +1540,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry.value", + full_name="aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry.value", index=1, number=2, type=9, @@ -1565,20 +1565,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3405, - serialized_end=3448, + serialized_start=3236, + serialized_end=3279, ) _TACMESSAGE_TAC_ERROR_PERFORMATIVE = _descriptor.Descriptor( name="Tac_Error_Performative", - full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative", + full_name="aea.fetchai.tac.TacMessage.Tac_Error_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="error_code", - full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.error_code", + full_name="aea.fetchai.tac.TacMessage.Tac_Error_Performative.error_code", index=0, number=1, type=11, @@ -1596,7 +1596,7 @@ ), _descriptor.FieldDescriptor( name="info", - full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.info", + full_name="aea.fetchai.tac.TacMessage.Tac_Error_Performative.info", index=1, number=2, type=11, @@ -1614,7 +1614,7 @@ ), _descriptor.FieldDescriptor( name="info_is_set", - full_name="fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.info_is_set", + full_name="aea.fetchai.tac.TacMessage.Tac_Error_Performative.info_is_set", index=2, number=3, type=8, @@ -1639,20 +1639,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3897, - serialized_end=4138, + serialized_start=3710, + serialized_end=3935, ) _TACMESSAGE = _descriptor.Descriptor( name="TacMessage", - full_name="fetchai.aea.fetchai.tac.TacMessage", + full_name="aea.fetchai.tac.TacMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="cancelled", - full_name="fetchai.aea.fetchai.tac.TacMessage.cancelled", + full_name="aea.fetchai.tac.TacMessage.cancelled", index=0, number=5, type=11, @@ -1670,7 +1670,7 @@ ), _descriptor.FieldDescriptor( name="game_data", - full_name="fetchai.aea.fetchai.tac.TacMessage.game_data", + full_name="aea.fetchai.tac.TacMessage.game_data", index=1, number=6, type=11, @@ -1688,7 +1688,7 @@ ), _descriptor.FieldDescriptor( name="register", - full_name="fetchai.aea.fetchai.tac.TacMessage.register", + full_name="aea.fetchai.tac.TacMessage.register", index=2, number=7, type=11, @@ -1706,7 +1706,7 @@ ), _descriptor.FieldDescriptor( name="tac_error", - full_name="fetchai.aea.fetchai.tac.TacMessage.tac_error", + full_name="aea.fetchai.tac.TacMessage.tac_error", index=3, number=8, type=11, @@ -1724,7 +1724,7 @@ ), _descriptor.FieldDescriptor( name="transaction", - full_name="fetchai.aea.fetchai.tac.TacMessage.transaction", + full_name="aea.fetchai.tac.TacMessage.transaction", index=4, number=9, type=11, @@ -1742,7 +1742,7 @@ ), _descriptor.FieldDescriptor( name="transaction_confirmation", - full_name="fetchai.aea.fetchai.tac.TacMessage.transaction_confirmation", + full_name="aea.fetchai.tac.TacMessage.transaction_confirmation", index=5, number=10, type=11, @@ -1760,7 +1760,7 @@ ), _descriptor.FieldDescriptor( name="unregister", - full_name="fetchai.aea.fetchai.tac.TacMessage.unregister", + full_name="aea.fetchai.tac.TacMessage.unregister", index=6, number=11, type=11, @@ -1796,14 +1796,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.tac.TacMessage.performative", + full_name="aea.fetchai.tac.TacMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=39, - serialized_end=4154, + serialized_start=31, + serialized_end=3951, ) _TACMESSAGE_ERRORCODE.fields_by_name[ @@ -1989,7 +1989,7 @@ dict( DESCRIPTOR=_TACMESSAGE_ERRORCODE, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.ErrorCode) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.ErrorCode) ), ), Register_Performative=_reflection.GeneratedProtocolMessageType( @@ -1998,7 +1998,7 @@ dict( DESCRIPTOR=_TACMESSAGE_REGISTER_PERFORMATIVE, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Register_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Register_Performative) ), ), Unregister_Performative=_reflection.GeneratedProtocolMessageType( @@ -2007,7 +2007,7 @@ dict( DESCRIPTOR=_TACMESSAGE_UNREGISTER_PERFORMATIVE, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Unregister_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Unregister_Performative) ), ), Transaction_Performative=_reflection.GeneratedProtocolMessageType( @@ -2020,7 +2020,7 @@ dict( DESCRIPTOR=_TACMESSAGE_TRANSACTION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Transaction_Performative.AmountByCurrencyIdEntry) ), ), FeeByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( @@ -2029,7 +2029,7 @@ dict( DESCRIPTOR=_TACMESSAGE_TRANSACTION_PERFORMATIVE_FEEBYCURRENCYIDENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Transaction_Performative.FeeByCurrencyIdEntry) ), ), QuantitiesByGoodIdEntry=_reflection.GeneratedProtocolMessageType( @@ -2038,12 +2038,12 @@ dict( DESCRIPTOR=_TACMESSAGE_TRANSACTION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Transaction_Performative.QuantitiesByGoodIdEntry) ), ), DESCRIPTOR=_TACMESSAGE_TRANSACTION_PERFORMATIVE, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Transaction_Performative) ), ), Cancelled_Performative=_reflection.GeneratedProtocolMessageType( @@ -2052,7 +2052,7 @@ dict( DESCRIPTOR=_TACMESSAGE_CANCELLED_PERFORMATIVE, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Cancelled_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Cancelled_Performative) ), ), Game_Data_Performative=_reflection.GeneratedProtocolMessageType( @@ -2065,7 +2065,7 @@ dict( DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Game_Data_Performative.AmountByCurrencyIdEntry) ), ), ExchangeParamsByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( @@ -2074,7 +2074,7 @@ dict( DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Game_Data_Performative.ExchangeParamsByCurrencyIdEntry) ), ), QuantitiesByGoodIdEntry=_reflection.GeneratedProtocolMessageType( @@ -2083,7 +2083,7 @@ dict( DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Game_Data_Performative.QuantitiesByGoodIdEntry) ), ), UtilityParamsByGoodIdEntry=_reflection.GeneratedProtocolMessageType( @@ -2092,7 +2092,7 @@ dict( DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Game_Data_Performative.UtilityParamsByGoodIdEntry) ), ), FeeByCurrencyIdEntry=_reflection.GeneratedProtocolMessageType( @@ -2101,7 +2101,7 @@ dict( DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_FEEBYCURRENCYIDENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Game_Data_Performative.FeeByCurrencyIdEntry) ), ), AgentAddrToNameEntry=_reflection.GeneratedProtocolMessageType( @@ -2110,7 +2110,7 @@ dict( DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_AGENTADDRTONAMEENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Game_Data_Performative.AgentAddrToNameEntry) ), ), CurrencyIdToNameEntry=_reflection.GeneratedProtocolMessageType( @@ -2119,7 +2119,7 @@ dict( DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_CURRENCYIDTONAMEENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Game_Data_Performative.CurrencyIdToNameEntry) ), ), GoodIdToNameEntry=_reflection.GeneratedProtocolMessageType( @@ -2128,7 +2128,7 @@ dict( DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_GOODIDTONAMEENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Game_Data_Performative.GoodIdToNameEntry) ), ), InfoEntry=_reflection.GeneratedProtocolMessageType( @@ -2137,12 +2137,12 @@ dict( DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE_INFOENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Game_Data_Performative.InfoEntry) ), ), DESCRIPTOR=_TACMESSAGE_GAME_DATA_PERFORMATIVE, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Game_Data_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Game_Data_Performative) ), ), Transaction_Confirmation_Performative=_reflection.GeneratedProtocolMessageType( @@ -2155,7 +2155,7 @@ dict( DESCRIPTOR=_TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.AmountByCurrencyIdEntry) ), ), QuantitiesByGoodIdEntry=_reflection.GeneratedProtocolMessageType( @@ -2164,12 +2164,12 @@ dict( DESCRIPTOR=_TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative.QuantitiesByGoodIdEntry) ), ), DESCRIPTOR=_TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Transaction_Confirmation_Performative) ), ), Tac_Error_Performative=_reflection.GeneratedProtocolMessageType( @@ -2182,17 +2182,17 @@ dict( DESCRIPTOR=_TACMESSAGE_TAC_ERROR_PERFORMATIVE_INFOENTRY, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Tac_Error_Performative.InfoEntry) ), ), DESCRIPTOR=_TACMESSAGE_TAC_ERROR_PERFORMATIVE, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage.Tac_Error_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage.Tac_Error_Performative) ), ), DESCRIPTOR=_TACMESSAGE, __module__="tac_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.tac.TacMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.tac.TacMessage) ), ) _sym_db.RegisterMessage(TacMessage) From 9c8d3c82a3a6aaf931af21ccfe849f172eb50ff1 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 14 Sep 2020 20:33:07 +0200 Subject: [PATCH 023/155] update hashes --- packages/hashes.csv | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/hashes.csv b/packages/hashes.csv index 9ec4261188..7904043149 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -34,18 +34,18 @@ fetchai/connections/tcp,QmU93B7yajCHwXsgDXXhv1uSuXi7VmFBhdahcFosbrr6nA fetchai/connections/webhook,QmaJunWQT1ypkqGnzrj5gYjjQBywjTHJmyktCZXZsa8hv8 fetchai/contracts/erc1155,QmTSpeW7JJZaBFwyHUbycPg87nUGW3CkkGchFxn6NtshpQ fetchai/contracts/scaffold,QmTKkXifQKq5sTVdVKeD9UGnDwdJoEAoJDjY6qUPt9Bsv2 -fetchai/protocols/contract_api,QmXEK5bYeQNgxTLQKXiVS8bW5PCXRmzLYoEfmRvamu5ntw -fetchai/protocols/default,QmdacRqMbT8yL47UWgFi4D1T3hat7kA4mYwcAZod4rdckL -fetchai/protocols/fipa,QmYLaQWzgPFCWNnzbAYfX9GyqMgvgv3r1BpofhnZjbt9hP -fetchai/protocols/gym,QmQ5dPRpfbVJgqmdr1dCRrt7cjSqFWe3mmehY1KpQ24Jng -fetchai/protocols/http,QmSTPtXUYGhs5m61DJpbB5Gs9jjSp479BPoCaM77nzpVN2 -fetchai/protocols/ledger_api,QmfJYfDbK8a8RePE6aR7sxjwSUPrCtXAAxonxsKmsX6xbe -fetchai/protocols/ml_trade,QmbWkEMnyQAFgz3UnE7Uq7drBYCGm218NHfGPXPgmbF8mc -fetchai/protocols/oef_search,QmZjFCHov7jgQ3dKBndyz1MDkZHzv1DHxKQm6BnZrQS924 +fetchai/protocols/contract_api,QmY5tx8AyGfcMmcmHUZGmCh1HzM6AVKZsUydpDrGnkb6WG +fetchai/protocols/default,QmQo4W57uVxayeTFRuQwKTimvrZ7qdTy4zaLeYgwEQWPfR +fetchai/protocols/fipa,QmeviVqpkggWWV8vestsEqQaahNyeHo4bjFvExx53Uc4J7 +fetchai/protocols/gym,Qmc3ucQ3K3MX5LjDERXWZTk2NkRhBZkDo7m1hsfYv1BKHX +fetchai/protocols/http,QmNiqrbyWjbZ55q5dJJzC6mVAwzjQb7GtPjEBfDaot7xzP +fetchai/protocols/ledger_api,QmWddBtnoaQ636XoABZ3wu7bdzvRyGkgoFzebPsjVhcL5P +fetchai/protocols/ml_trade,QmZny7NUmTp2xWmchdM2pSMU1goVRcnJ3JqMsvRn1sRpMD +fetchai/protocols/oef_search,QmUcf8NvuKGLb8ep3ze3sdKq4EQFosLVNiqgMPAwqbDjJR fetchai/protocols/scaffold,QmZhHsoA7JzNSoSUABFWqyRELaei4BtKYce1QKVcHhnQJN -fetchai/protocols/signing,QmUepyAA8tn5CsGjg1aCLRjbi611KYpPKLnNJbEdntdZyM -fetchai/protocols/state_update,QmdpQnN23UNKSvt6gtkFrV4qsnRbKuNNBFAKAGuzharTAj -fetchai/protocols/tac,Qmb3kxpiSyCVzq1m7yGzQp2mScc6tfzcoaEQiaWaMFg562 +fetchai/protocols/signing,Qma6Gt1q62Q1WyfhDydKinTtSiXPdtzWnwoGxDtQRXosw1 +fetchai/protocols/state_update,QmVwGWzWC4APKBnLMyYo3dApBqUtyNnnsLvqnyRY9nT5Tn +fetchai/protocols/tac,QmexcWQaNiFp9fhJ8XtwXnNvzV2DbjryVdoE4tByggbEXs fetchai/skills/aries_alice,QmceH6zkDzd9HGQWHgo23CoWNC76ciUhSXLeoBbaAL7nVr fetchai/skills/aries_faber,QmaWkUa6PHnYMxqxN1FDmP8KYhwt6TUdAVNjHxBVGp2fw1 fetchai/skills/carpark_client,QmcgCzxhNVY1H8o1wBn1Yon62d7CinF8Pzq4toZxkNuW9r From f1d66c3bbf61eba6feecb28857026d9f1e7cd021 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Mon, 14 Sep 2020 21:25:45 +0200 Subject: [PATCH 024/155] Update test protocols for generator tests --- scripts/generate_ipfs_hashes.py | 4 +- tests/data/generator/t_protocol/protocol.yaml | 14 +- .../generator/t_protocol/t_protocol.proto | 2 +- .../generator/t_protocol/t_protocol_pb2.py | 478 +++++++++--------- .../generator/t_protocol_no_ct/protocol.yaml | 12 +- .../t_protocol_no_ct/t_protocol_no_ct.proto | 2 +- .../t_protocol_no_ct/t_protocol_no_ct_pb2.py | 424 ++++++++-------- tests/data/hashes.csv | 2 + .../test_generator/test_generator.py | 2 +- 9 files changed, 472 insertions(+), 468 deletions(-) diff --git a/scripts/generate_ipfs_hashes.py b/scripts/generate_ipfs_hashes.py index 00ff2cc9ff..286cf8895c 100755 --- a/scripts/generate_ipfs_hashes.py +++ b/scripts/generate_ipfs_hashes.py @@ -117,6 +117,8 @@ def package_type_and_path(package_path: Path) -> Tuple[PackageType, Path]: (PackageType.AGENT, TEST_PATH / "dummy_aea"), (PackageType.CONNECTION, TEST_PATH / "dummy_connection"), (PackageType.CONTRACT, TEST_PATH / "dummy_contract"), + (PackageType.PROTOCOL, TEST_PATH / "generator" / "t_protocol"), + (PackageType.PROTOCOL, TEST_PATH / "generator" / "t_protocol_no_ct"), (PackageType.SKILL, TEST_PATH / "dependencies_skill"), (PackageType.SKILL, TEST_PATH / "exception_skill"), (PackageType.SKILL, TEST_PATH / "dummy_skill"), @@ -434,7 +436,7 @@ def update_hashes(timeout: float = 15.0) -> int: key, package_hash, _ = ipfs_hashing( client, configuration_obj, package_type ) - if package_path.parent == TEST_PATH: + if TEST_PATH in package_path.parents: test_package_hashes[key] = package_hash else: package_hashes[key] = package_hash diff --git a/tests/data/generator/t_protocol/protocol.yaml b/tests/data/generator/t_protocol/protocol.yaml index 59500db240..badefccead 100644 --- a/tests/data/generator/t_protocol/protocol.yaml +++ b/tests/data/generator/t_protocol/protocol.yaml @@ -6,13 +6,13 @@ description: A protocol for testing purposes. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: - __init__.py: QmTwLir2v2eYMkDeUomf9uL1hrQhjzVTTqrQwamGG5iwn4 - custom_types.py: QmVboXL98TzRtreCRMrCF3U9xjRGRkGJjNgDBTAm5GXyLq - dialogues.py: QmVUoaW4CNgjZNy6PzmQrSYTCdeWQERsQR5maXhD9cd6HF - message.py: QmS3NcTMgbDx1ZkXkzwfiML26LU9FPfgjg2XznpL8wueQR - serialization.py: QmXHxombhGXKfMNhpvs2SKmXVbRac1gvn4m2hxsiGyRJKs - t_protocol.proto: QmXpZUUnMQ2JJtg3ZEFfec86HtpTyD85qN8xCnJWgrVq5J - t_protocol_pb2.py: QmR6ZXkZ2yiYLWWPnS1CdT3Tv59MXdpy6fg8GsKDAmqZFK + __init__.py: QmXMWqJxnq8sSytHbNcK8tu4ySEuMTNLSAZZAiWK46pagy + custom_types.py: QmWg8HFav8w9tfZfMrTG5Uo7QpexvYKKkhpGPD18233pLw + dialogues.py: QmdpXJCUP6wV6StDxByraFGveMcTSjjFhDju74S4QVQpxf + message.py: QmRYDQCKa4x8zk3ztYEEc88Ltob77uAwfxwPeF4qVQaAzP + serialization.py: QmT4WgHPoVEbgE3awzDEXYr4VQMdfuUsQ9LnwrHynP16Q4 + t_protocol.proto: QmWdNaAJ9Mkf2SHF1RSZrsk2a5jZyXZtCD7XU5PHLCph5z + t_protocol_pb2.py: QmRr3b2hjbN2UshSQTr1wWSCpqeNgMfDfnVyBk8BQGdFn4 fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/generator/t_protocol/t_protocol.proto b/tests/data/generator/t_protocol/t_protocol.proto index 50dd27992d..c831138afa 100644 --- a/tests/data/generator/t_protocol/t_protocol.proto +++ b/tests/data/generator/t_protocol/t_protocol.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.t_protocol; +package aea.fetchai.t_protocol; message TProtocolMessage{ diff --git a/tests/data/generator/t_protocol/t_protocol_pb2.py b/tests/data/generator/t_protocol/t_protocol_pb2.py index 5e0ece150b..472ab91fe5 100644 --- a/tests/data/generator/t_protocol/t_protocol_pb2.py +++ b/tests/data/generator/t_protocol/t_protocol_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="t_protocol.proto", - package="fetchai.aea.fetchai.t_protocol", + package="aea.fetchai.t_protocol", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\x10t_protocol.proto\x12\x1e\x66\x65tchai.aea.fetchai.t_protocol"\xa3\x35\n\x10TProtocolMessage\x12h\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32M.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12\x80\x01\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32Y.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12h\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32M.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12\x66\n\x0eperformative_o\x18\x08 \x01(\x0b\x32L.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_PerformativeH\x00\x12j\n\x10performative_pct\x18\t \x01(\x0b\x32N.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12j\n\x10performative_pmt\x18\n \x01(\x0b\x32N.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12h\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32M.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\xa7\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x05\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(\x05\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12]\n\ndict_field\x18\x08 \x03(\x0b\x32I.fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1an\n\x1cPerformative_Ct_Performative\x12N\n\ncontent_ct\x18\x01 \x01(\x0b\x32:.fetchai.aea.fetchai.t_protocol.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(\x05\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(\x05\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(\x05\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\x9b\x17\n\x1dPerformative_Pmt_Performative\x12\x87\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32g.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x83\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32\x65.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x87\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32g.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x85\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32\x66.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x83\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32\x65.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x89\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32h.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x85\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32\x66.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x89\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32h.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x87\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32g.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x85\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32\x66.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x87\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32g.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x83\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32\x65.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x87\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32g.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x85\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32\x66.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x83\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32\x65.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xb0\x0c\n\x1cPerformative_Mt_Performative\x12\x62\n\x1e\x63ontent_union_1_type_DataModel\x18\x01 \x01(\x0b\x32:.fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x02 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x04 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x05 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x06 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x07 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x08 \x03(\x08\x12\x9e\x01\n$content_union_1_type_dict_of_str_int\x18\t \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\n \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x0b \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0c \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\r \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\x0e \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0f \x03(\x0c\x12\x9e\x01\n$content_union_2_type_dict_of_str_int\x18\x10 \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xa2\x01\n&content_union_2_type_dict_of_int_float\x18\x11 \x03(\x0b\x32r.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xa4\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x12 \x03(\x0b\x32s.fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\xac\x04\n\x1bPerformative_O_Performative\x12P\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32:.fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel\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(\x05\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\x84\x01\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32\x64.fetchai.aea.fetchai.t_protocol.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + '\n\x10t_protocol.proto\x12\x16\x61\x65\x61.fetchai.t_protocol"\x9c\x33\n\x10TProtocolMessage\x12`\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32\x45.aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12x\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32Q.aea.fetchai.t_protocol.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12`\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32\x45.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12^\n\x0eperformative_o\x18\x08 \x01(\x0b\x32\x44.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_PerformativeH\x00\x12\x62\n\x10performative_pct\x18\t \x01(\x0b\x32\x46.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12\x62\n\x10performative_pmt\x18\n \x01(\x0b\x32\x46.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12`\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32\x45.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\x9f\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x05\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(\x05\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12U\n\ndict_field\x18\x08 \x03(\x0b\x32\x41.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x66\n\x1cPerformative_Ct_Performative\x12\x46\n\ncontent_ct\x18\x01 \x01(\x0b\x32\x32.aea.fetchai.t_protocol.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(\x05\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(\x05\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(\x05\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\x96\x16\n\x1dPerformative_Pmt_Performative\x12\x7f\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32_.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12{\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32].aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x7f\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32_.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12}\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32^.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12{\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32].aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x81\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32`.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12}\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32^.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x81\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32`.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x7f\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32_.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12}\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32^.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x7f\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32_.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12{\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32].aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x7f\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32_.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12}\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32^.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12{\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32].aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\x88\x0c\n\x1cPerformative_Mt_Performative\x12Z\n\x1e\x63ontent_union_1_type_DataModel\x18\x01 \x01(\x0b\x32\x32.aea.fetchai.t_protocol.TProtocolMessage.DataModel\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x02 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x04 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x05 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x06 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x07 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x08 \x03(\x08\x12\x96\x01\n$content_union_1_type_dict_of_str_int\x18\t \x03(\x0b\x32h.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\n \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x0b \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0c \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\r \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\x0e \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0f \x03(\x0c\x12\x96\x01\n$content_union_2_type_dict_of_str_int\x18\x10 \x03(\x0b\x32h.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x9a\x01\n&content_union_2_type_dict_of_int_float\x18\x11 \x03(\x0b\x32j.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\x9c\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x12 \x03(\x0b\x32k.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\x9b\x04\n\x1bPerformative_O_Performative\x12H\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32\x32.aea.fetchai.t_protocol.TProtocolMessage.DataModel\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(\x05\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|\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32\\.aea.fetchai.t_protocol.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' ), ) _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY = _descriptor.Descriptor( name="DictFieldEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry.key", index=0, number=1, type=5, @@ -52,7 +52,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry.value", index=1, number=2, type=8, @@ -77,20 +77,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1090, - serialized_end=1138, + serialized_start=1017, + serialized_end=1065, ) _TPROTOCOLMESSAGE_DATAMODEL = _descriptor.Descriptor( name="DataModel", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="bytes_field", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.bytes_field", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.bytes_field", index=0, number=1, type=12, @@ -108,7 +108,7 @@ ), _descriptor.FieldDescriptor( name="int_field", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.int_field", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.int_field", index=1, number=2, type=5, @@ -126,7 +126,7 @@ ), _descriptor.FieldDescriptor( name="float_field", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.float_field", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.float_field", index=2, number=3, type=2, @@ -144,7 +144,7 @@ ), _descriptor.FieldDescriptor( name="bool_field", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.bool_field", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.bool_field", index=3, number=4, type=8, @@ -162,7 +162,7 @@ ), _descriptor.FieldDescriptor( name="str_field", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.str_field", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.str_field", index=4, number=5, type=9, @@ -180,7 +180,7 @@ ), _descriptor.FieldDescriptor( name="set_field", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.set_field", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.set_field", index=5, number=6, type=5, @@ -198,7 +198,7 @@ ), _descriptor.FieldDescriptor( name="list_field", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.list_field", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.list_field", index=6, number=7, type=9, @@ -216,7 +216,7 @@ ), _descriptor.FieldDescriptor( name="dict_field", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.dict_field", + full_name="aea.fetchai.t_protocol.TProtocolMessage.DataModel.dict_field", index=7, number=8, type=11, @@ -241,20 +241,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=843, - serialized_end=1138, + serialized_start=778, + serialized_end=1065, ) _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Ct_Performative", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_Performative", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_ct", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_Performative.content_ct", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_Performative.content_ct", index=0, number=1, type=11, @@ -279,20 +279,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1140, - serialized_end=1250, + serialized_start=1067, + serialized_end=1169, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pt_Performative", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_bytes", index=0, number=1, type=12, @@ -310,7 +310,7 @@ ), _descriptor.FieldDescriptor( name="content_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_int", index=1, number=2, type=5, @@ -328,7 +328,7 @@ ), _descriptor.FieldDescriptor( name="content_float", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_float", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_float", index=2, number=3, type=2, @@ -346,7 +346,7 @@ ), _descriptor.FieldDescriptor( name="content_bool", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_bool", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_bool", index=3, number=4, type=8, @@ -364,7 +364,7 @@ ), _descriptor.FieldDescriptor( name="content_str", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_str", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative.content_str", index=4, number=5, type=9, @@ -389,20 +389,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1253, - serialized_end=1393, + serialized_start=1172, + serialized_end=1312, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pct_Performative", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_set_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_bytes", index=0, number=1, type=12, @@ -420,7 +420,7 @@ ), _descriptor.FieldDescriptor( name="content_set_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_int", index=1, number=2, type=5, @@ -438,7 +438,7 @@ ), _descriptor.FieldDescriptor( name="content_set_float", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_float", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_float", index=2, number=3, type=2, @@ -456,7 +456,7 @@ ), _descriptor.FieldDescriptor( name="content_set_bool", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_bool", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_bool", index=3, number=4, type=8, @@ -474,7 +474,7 @@ ), _descriptor.FieldDescriptor( name="content_set_str", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_str", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_set_str", index=4, number=5, type=9, @@ -492,7 +492,7 @@ ), _descriptor.FieldDescriptor( name="content_list_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_bytes", index=5, number=6, type=12, @@ -510,7 +510,7 @@ ), _descriptor.FieldDescriptor( name="content_list_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_int", index=6, number=7, type=5, @@ -528,7 +528,7 @@ ), _descriptor.FieldDescriptor( name="content_list_float", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_float", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_float", index=7, number=8, type=2, @@ -546,7 +546,7 @@ ), _descriptor.FieldDescriptor( name="content_list_bool", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_bool", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_bool", index=8, number=9, type=8, @@ -564,7 +564,7 @@ ), _descriptor.FieldDescriptor( name="content_list_str", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_str", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative.content_list_str", index=9, number=10, type=9, @@ -589,20 +589,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1396, - serialized_end=1692, + serialized_start=1315, + serialized_end=1611, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = _descriptor.Descriptor( name="ContentDictIntBytesEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.key", index=0, number=1, type=5, @@ -620,7 +620,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.value", index=1, number=2, type=12, @@ -645,20 +645,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3778, - serialized_end=3836, + serialized_start=3564, + serialized_end=3622, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = _descriptor.Descriptor( name="ContentDictIntIntEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.key", index=0, number=1, type=5, @@ -676,7 +676,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.value", index=1, number=2, type=5, @@ -701,20 +701,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3838, - serialized_end=3894, + serialized_start=3624, + serialized_end=3680, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = _descriptor.Descriptor( name="ContentDictIntFloatEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.key", index=0, number=1, type=5, @@ -732,7 +732,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.value", index=1, number=2, type=2, @@ -757,20 +757,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3896, - serialized_end=3954, + serialized_start=3682, + serialized_end=3740, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = _descriptor.Descriptor( name="ContentDictIntBoolEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.key", index=0, number=1, type=5, @@ -788,7 +788,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.value", index=1, number=2, type=8, @@ -813,20 +813,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3956, - serialized_end=4013, + serialized_start=3742, + serialized_end=3799, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = _descriptor.Descriptor( name="ContentDictIntStrEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.key", index=0, number=1, type=5, @@ -844,7 +844,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.value", index=1, number=2, type=9, @@ -869,20 +869,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4015, - serialized_end=4071, + serialized_start=3801, + serialized_end=3857, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = _descriptor.Descriptor( name="ContentDictBoolBytesEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.key", index=0, number=1, type=8, @@ -900,7 +900,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.value", index=1, number=2, type=12, @@ -925,20 +925,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4073, - serialized_end=4132, + serialized_start=3859, + serialized_end=3918, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = _descriptor.Descriptor( name="ContentDictBoolIntEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.key", index=0, number=1, type=8, @@ -956,7 +956,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.value", index=1, number=2, type=5, @@ -981,20 +981,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4134, - serialized_end=4191, + serialized_start=3920, + serialized_end=3977, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = _descriptor.Descriptor( name="ContentDictBoolFloatEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.key", index=0, number=1, type=8, @@ -1012,7 +1012,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.value", index=1, number=2, type=2, @@ -1037,20 +1037,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4193, - serialized_end=4252, + serialized_start=3979, + serialized_end=4038, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = _descriptor.Descriptor( name="ContentDictBoolBoolEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.key", index=0, number=1, type=8, @@ -1068,7 +1068,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.value", index=1, number=2, type=8, @@ -1093,20 +1093,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4254, - serialized_end=4312, + serialized_start=4040, + serialized_end=4098, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = _descriptor.Descriptor( name="ContentDictBoolStrEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.key", index=0, number=1, type=8, @@ -1124,7 +1124,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.value", index=1, number=2, type=9, @@ -1149,20 +1149,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4314, - serialized_end=4371, + serialized_start=4100, + serialized_end=4157, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = _descriptor.Descriptor( name="ContentDictStrBytesEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.key", index=0, number=1, type=9, @@ -1180,7 +1180,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.value", index=1, number=2, type=12, @@ -1205,20 +1205,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4373, - serialized_end=4431, + serialized_start=4159, + serialized_end=4217, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = _descriptor.Descriptor( name="ContentDictStrIntEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.key", index=0, number=1, type=9, @@ -1236,7 +1236,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.value", index=1, number=2, type=5, @@ -1261,20 +1261,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4433, - serialized_end=4489, + serialized_start=4219, + serialized_end=4275, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = _descriptor.Descriptor( name="ContentDictStrFloatEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.key", index=0, number=1, type=9, @@ -1292,7 +1292,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.value", index=1, number=2, type=2, @@ -1317,20 +1317,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4491, - serialized_end=4549, + serialized_start=4277, + serialized_end=4335, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = _descriptor.Descriptor( name="ContentDictStrBoolEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.key", index=0, number=1, type=9, @@ -1348,7 +1348,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.value", index=1, number=2, type=8, @@ -1373,20 +1373,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4551, - serialized_end=4608, + serialized_start=4337, + serialized_end=4394, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = _descriptor.Descriptor( name="ContentDictStrStrEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.key", index=0, number=1, type=9, @@ -1404,7 +1404,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.value", index=1, number=2, type=9, @@ -1429,20 +1429,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4610, - serialized_end=4666, + serialized_start=4396, + serialized_end=4452, ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pmt_Performative", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_dict_int_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_bytes", index=0, number=1, type=11, @@ -1460,7 +1460,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_int", index=1, number=2, type=11, @@ -1478,7 +1478,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_float", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_float", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_float", index=2, number=3, type=11, @@ -1496,7 +1496,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_bool", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_bool", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_bool", index=3, number=4, type=11, @@ -1514,7 +1514,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_str", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_str", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_str", index=4, number=5, type=11, @@ -1532,7 +1532,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_bytes", index=5, number=6, type=11, @@ -1550,7 +1550,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_int", index=6, number=7, type=11, @@ -1568,7 +1568,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_float", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_float", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_float", index=7, number=8, type=11, @@ -1586,7 +1586,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_bool", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_bool", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_bool", index=8, number=9, type=11, @@ -1604,7 +1604,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_str", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_str", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_str", index=9, number=10, type=11, @@ -1622,7 +1622,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_bytes", index=10, number=11, type=11, @@ -1640,7 +1640,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_int", index=11, number=12, type=11, @@ -1658,7 +1658,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_float", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_float", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_float", index=12, number=13, type=11, @@ -1676,7 +1676,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_bool", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_bool", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_bool", index=13, number=14, type=11, @@ -1694,7 +1694,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_str", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_str", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_str", index=14, number=15, type=11, @@ -1735,20 +1735,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1695, - serialized_end=4666, + serialized_start=1614, + serialized_end=4452, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( name="ContentUnion1TypeDictOfStrIntEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.key", index=0, number=1, type=9, @@ -1766,7 +1766,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.value", index=1, number=2, type=5, @@ -1791,20 +1791,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5970, - serialized_end=6038, + serialized_start=5716, + serialized_end=5784, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfStrIntEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.key", index=0, number=1, type=9, @@ -1822,7 +1822,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.value", index=1, number=2, type=5, @@ -1847,20 +1847,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6040, - serialized_end=6108, + serialized_start=5786, + serialized_end=5854, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfIntFloatEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.key", index=0, number=1, type=5, @@ -1878,7 +1878,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.value", index=1, number=2, type=2, @@ -1903,20 +1903,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6110, - serialized_end=6180, + serialized_start=5856, + serialized_end=5926, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfBoolBytesEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.key", index=0, number=1, type=8, @@ -1934,7 +1934,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.value", index=1, number=2, type=12, @@ -1959,20 +1959,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6182, - serialized_end=6253, + serialized_start=5928, + serialized_end=5999, ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Mt_Performative", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_union_1_type_DataModel", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_DataModel", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_DataModel", index=0, number=1, type=11, @@ -1990,7 +1990,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_bytes", index=1, number=2, type=12, @@ -2008,7 +2008,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_int", index=2, number=3, type=5, @@ -2026,7 +2026,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_float", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_float", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_float", index=3, number=4, type=2, @@ -2044,7 +2044,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_bool", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_bool", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_bool", index=4, number=5, type=8, @@ -2062,7 +2062,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_str", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_str", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_str", index=5, number=6, type=9, @@ -2080,7 +2080,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_set_of_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_set_of_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_set_of_int", index=6, number=7, type=5, @@ -2098,7 +2098,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_list_of_bool", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_list_of_bool", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_list_of_bool", index=7, number=8, type=8, @@ -2116,7 +2116,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_dict_of_str_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_dict_of_str_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_dict_of_str_int", index=8, number=9, type=11, @@ -2134,7 +2134,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_bytes", index=9, number=10, type=12, @@ -2152,7 +2152,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_int", index=10, number=11, type=5, @@ -2170,7 +2170,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_str", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_str", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_str", index=11, number=12, type=9, @@ -2188,7 +2188,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_float", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_float", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_float", index=12, number=13, type=2, @@ -2206,7 +2206,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_bool", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_bool", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_bool", index=13, number=14, type=8, @@ -2224,7 +2224,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_bytes", index=14, number=15, type=12, @@ -2242,7 +2242,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_str_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_str_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_str_int", index=15, number=16, type=11, @@ -2260,7 +2260,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_int_float", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_int_float", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_int_float", index=16, number=17, type=11, @@ -2278,7 +2278,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_bool_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_bool_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_bool_bytes", index=17, number=18, type=11, @@ -2308,20 +2308,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4669, - serialized_end=6253, + serialized_start=4455, + serialized_end=5999, ) _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = _descriptor.Descriptor( name="ContentODictStrIntEntry", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry.key", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry.key", index=0, number=1, type=9, @@ -2339,7 +2339,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry.value", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry.value", index=1, number=2, type=5, @@ -2364,20 +2364,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6755, - serialized_end=6812, + serialized_start=6484, + serialized_end=6541, ) _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _descriptor.Descriptor( name="Performative_O_Performative", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_o_ct", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_ct", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_ct", index=0, number=1, type=11, @@ -2395,7 +2395,7 @@ ), _descriptor.FieldDescriptor( name="content_o_ct_is_set", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_ct_is_set", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_ct_is_set", index=1, number=2, type=8, @@ -2413,7 +2413,7 @@ ), _descriptor.FieldDescriptor( name="content_o_bool", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_bool", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_bool", index=2, number=3, type=8, @@ -2431,7 +2431,7 @@ ), _descriptor.FieldDescriptor( name="content_o_bool_is_set", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_bool_is_set", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_bool_is_set", index=3, number=4, type=8, @@ -2449,7 +2449,7 @@ ), _descriptor.FieldDescriptor( name="content_o_set_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_set_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_set_int", index=4, number=5, type=5, @@ -2467,7 +2467,7 @@ ), _descriptor.FieldDescriptor( name="content_o_set_int_is_set", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_set_int_is_set", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_set_int_is_set", index=5, number=6, type=8, @@ -2485,7 +2485,7 @@ ), _descriptor.FieldDescriptor( name="content_o_list_bytes", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_list_bytes", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_list_bytes", index=6, number=7, type=12, @@ -2503,7 +2503,7 @@ ), _descriptor.FieldDescriptor( name="content_o_list_bytes_is_set", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_list_bytes_is_set", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_list_bytes_is_set", index=7, number=8, type=8, @@ -2521,7 +2521,7 @@ ), _descriptor.FieldDescriptor( name="content_o_dict_str_int", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_dict_str_int", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_dict_str_int", index=8, number=9, type=11, @@ -2539,7 +2539,7 @@ ), _descriptor.FieldDescriptor( name="content_o_dict_str_int_is_set", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_dict_str_int_is_set", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.content_o_dict_str_int_is_set", index=9, number=10, type=8, @@ -2566,13 +2566,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6256, - serialized_end=6812, + serialized_start=6002, + serialized_end=6541, ) _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Empty_Contents_Performative", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Empty_Contents_Performative", + full_name="aea.fetchai.t_protocol.TProtocolMessage.Performative_Empty_Contents_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -2585,20 +2585,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6814, - serialized_end=6856, + serialized_start=6543, + serialized_end=6585, ) _TPROTOCOLMESSAGE = _descriptor.Descriptor( name="TProtocolMessage", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage", + full_name="aea.fetchai.t_protocol.TProtocolMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="performative_ct", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_ct", + full_name="aea.fetchai.t_protocol.TProtocolMessage.performative_ct", index=0, number=5, type=11, @@ -2616,7 +2616,7 @@ ), _descriptor.FieldDescriptor( name="performative_empty_contents", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_empty_contents", + full_name="aea.fetchai.t_protocol.TProtocolMessage.performative_empty_contents", index=1, number=6, type=11, @@ -2634,7 +2634,7 @@ ), _descriptor.FieldDescriptor( name="performative_mt", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_mt", + full_name="aea.fetchai.t_protocol.TProtocolMessage.performative_mt", index=2, number=7, type=11, @@ -2652,7 +2652,7 @@ ), _descriptor.FieldDescriptor( name="performative_o", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_o", + full_name="aea.fetchai.t_protocol.TProtocolMessage.performative_o", index=3, number=8, type=11, @@ -2670,7 +2670,7 @@ ), _descriptor.FieldDescriptor( name="performative_pct", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_pct", + full_name="aea.fetchai.t_protocol.TProtocolMessage.performative_pct", index=4, number=9, type=11, @@ -2688,7 +2688,7 @@ ), _descriptor.FieldDescriptor( name="performative_pmt", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_pmt", + full_name="aea.fetchai.t_protocol.TProtocolMessage.performative_pmt", index=5, number=10, type=11, @@ -2706,7 +2706,7 @@ ), _descriptor.FieldDescriptor( name="performative_pt", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative_pt", + full_name="aea.fetchai.t_protocol.TProtocolMessage.performative_pt", index=6, number=11, type=11, @@ -2742,14 +2742,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.t_protocol.TProtocolMessage.performative", + full_name="aea.fetchai.t_protocol.TProtocolMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=53, - serialized_end=6872, + serialized_start=45, + serialized_end=6601, ) _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY.containing_type = _TPROTOCOLMESSAGE_DATAMODEL @@ -2997,12 +2997,12 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.DataModel.DictFieldEntry) ), ), DESCRIPTOR=_TPROTOCOLMESSAGE_DATAMODEL, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.DataModel) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.DataModel) ), ), Performative_Ct_Performative=_reflection.GeneratedProtocolMessageType( @@ -3011,7 +3011,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Ct_Performative) ), ), Performative_Pt_Performative=_reflection.GeneratedProtocolMessageType( @@ -3020,7 +3020,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pt_Performative) ), ), Performative_Pct_Performative=_reflection.GeneratedProtocolMessageType( @@ -3029,7 +3029,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pct_Performative) ), ), Performative_Pmt_Performative=_reflection.GeneratedProtocolMessageType( @@ -3042,7 +3042,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) ), ), ContentDictIntIntEntry=_reflection.GeneratedProtocolMessageType( @@ -3051,7 +3051,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) ), ), ContentDictIntFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -3060,7 +3060,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) ), ), ContentDictIntBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -3069,7 +3069,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) ), ), ContentDictIntStrEntry=_reflection.GeneratedProtocolMessageType( @@ -3078,7 +3078,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) ), ), ContentDictBoolBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -3087,7 +3087,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) ), ), ContentDictBoolIntEntry=_reflection.GeneratedProtocolMessageType( @@ -3096,7 +3096,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) ), ), ContentDictBoolFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -3105,7 +3105,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) ), ), ContentDictBoolBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -3114,7 +3114,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) ), ), ContentDictBoolStrEntry=_reflection.GeneratedProtocolMessageType( @@ -3123,7 +3123,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) ), ), ContentDictStrBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -3132,7 +3132,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) ), ), ContentDictStrIntEntry=_reflection.GeneratedProtocolMessageType( @@ -3141,7 +3141,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) ), ), ContentDictStrFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -3150,7 +3150,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) ), ), ContentDictStrBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -3159,7 +3159,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) ), ), ContentDictStrStrEntry=_reflection.GeneratedProtocolMessageType( @@ -3168,12 +3168,12 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) ), ), DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Pmt_Performative) ), ), Performative_Mt_Performative=_reflection.GeneratedProtocolMessageType( @@ -3186,7 +3186,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) ), ), ContentUnion2TypeDictOfStrIntEntry=_reflection.GeneratedProtocolMessageType( @@ -3195,7 +3195,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) ), ), ContentUnion2TypeDictOfIntFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -3204,7 +3204,7 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) ), ), ContentUnion2TypeDictOfBoolBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -3213,12 +3213,12 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) ), ), DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Mt_Performative) ), ), Performative_O_Performative=_reflection.GeneratedProtocolMessageType( @@ -3231,12 +3231,12 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry) ), ), DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_O_Performative) ), ), Performative_Empty_Contents_Performative=_reflection.GeneratedProtocolMessageType( @@ -3245,12 +3245,12 @@ dict( DESCRIPTOR=_TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage.Performative_Empty_Contents_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage.Performative_Empty_Contents_Performative) ), ), DESCRIPTOR=_TPROTOCOLMESSAGE, __module__="t_protocol_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol.TProtocolMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol.TProtocolMessage) ), ) _sym_db.RegisterMessage(TProtocolMessage) diff --git a/tests/data/generator/t_protocol_no_ct/protocol.yaml b/tests/data/generator/t_protocol_no_ct/protocol.yaml index e39a2990d2..1186a59c59 100644 --- a/tests/data/generator/t_protocol_no_ct/protocol.yaml +++ b/tests/data/generator/t_protocol_no_ct/protocol.yaml @@ -6,12 +6,12 @@ description: A protocol for testing purposes. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: - __init__.py: QmRGHGRoZHGCXQ29v3q93Nt6J5TuhggYvUvZoQfrM6c3yp - dialogues.py: QmUjFTMYk2C69dcYfsKorTQWJbaUGEz8orCQnkZtFbR6Je - message.py: Qma11dAGwWr3oYSWAmRrwLJj9mLvyLVD66svTyHwU3HVNB - serialization.py: QmUvPmEbmg34A4XKCba3H2QFSdviUzEWMsBUNdJg4pysKD - t_protocol_no_ct.proto: QmUsW7bFZ3Ru3p6VSkAQekEhdYKcH2cxiSez291YxZ2kQ9 - t_protocol_no_ct_pb2.py: Qmb8Z6BoyZabtBkwdwKxCf9F5igPcp3faEirorkHDeis2g + __init__.py: QmX5UaUHNHe91qfCqwmAZStU3WN9evJqBwk1zKwQoFPzNV + dialogues.py: QmPHhh9wkKDG7Fiy9E2WkkggYULFhLrySihJpoBw3mRn2o + message.py: QmULXAb5Daeke4p9hRUNWhYrh4ZWdxvArP1GCZk1245HGe + serialization.py: Qmdsbpcnnm9eyU9GheUQDY6dkdzmN4on7j6zmiTjeuUMxD + t_protocol_no_ct.proto: Qmc8KkKnWZ9utBxrbEyWhVDRdut87DkFvmHP3SYUg4J3EU + t_protocol_no_ct_pb2.py: QmPDVxuXLGrVes8nv66g2JFT3rqUN9AjzrMeCFyDK4rjyw fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto index f393c099bf..8c53120a84 100644 --- a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto +++ b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package fetchai.aea.fetchai.t_protocol_no_ct; +package aea.fetchai.t_protocol_no_ct; message TProtocolNoCtMessage{ diff --git a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py index 2cb124f14f..5e1254c261 100644 --- a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py +++ b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py @@ -16,25 +16,25 @@ DESCRIPTOR = _descriptor.FileDescriptor( name="t_protocol_no_ct.proto", - package="fetchai.aea.fetchai.t_protocol_no_ct", + package="aea.fetchai.t_protocol_no_ct", syntax="proto3", serialized_options=None, serialized_pb=_b( - '\n\x16t_protocol_no_ct.proto\x12$fetchai.aea.fetchai.t_protocol_no_ct"\xd4\x31\n\x14TProtocolNoCtMessage\x12\x8a\x01\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32\x63.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12r\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32W.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12p\n\x0eperformative_o\x18\x07 \x01(\x0b\x32V.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12t\n\x10performative_pct\x18\x08 \x01(\x0b\x32X.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12t\n\x10performative_pmt\x18\t \x01(\x0b\x32X.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12r\n\x0fperformative_pt\x18\n \x01(\x0b\x32W.fetchai.aea.fetchai.t_protocol_no_ct.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(\x05\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(\x05\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(\x05\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\xb1\x18\n\x1dPerformative_Pmt_Performative\x12\x91\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32q.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x8d\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32o.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x91\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32q.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x8f\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x8d\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32o.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x93\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32r.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x8f\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x93\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32r.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x91\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32q.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x8f\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x91\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32q.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x8d\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32o.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x91\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32q.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x8f\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32p.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x8d\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32o.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xf4\x0b\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x02 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x03 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x05 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x06 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x07 \x03(\x08\x12\xa8\x01\n$content_union_1_type_dict_of_str_int\x18\x08 \x03(\x0b\x32z.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\t \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\n \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0b \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\x0c \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\r \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0e \x03(\x0c\x12\xa8\x01\n$content_union_2_type_dict_of_str_int\x18\x0f \x03(\x0b\x32z.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xac\x01\n&content_union_2_type_dict_of_int_float\x18\x10 \x03(\x0b\x32|.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xae\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x11 \x03(\x0b\x32}.fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\xc7\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(\x05\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\x8e\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32n.fetchai.aea.fetchai.t_protocol_no_ct.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + '\n\x16t_protocol_no_ct.proto\x12\x1c\x61\x65\x61.fetchai.t_protocol_no_ct"\x84\x30\n\x14TProtocolNoCtMessage\x12\x82\x01\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32[.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12j\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32O.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12h\n\x0eperformative_o\x18\x07 \x01(\x0b\x32N.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12l\n\x10performative_pct\x18\x08 \x01(\x0b\x32P.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12l\n\x10performative_pmt\x18\t \x01(\x0b\x32P.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12j\n\x0fperformative_pt\x18\n \x01(\x0b\x32O.aea.fetchai.t_protocol_no_ct.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(\x05\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(\x05\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(\x05\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\xb9\x17\n\x1dPerformative_Pmt_Performative\x12\x89\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32i.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x85\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32g.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x89\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32i.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x87\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32h.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x85\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32g.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x8b\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32j.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x87\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32h.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x8b\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32j.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x89\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32i.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x87\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32h.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x89\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32i.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x85\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32g.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x89\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32i.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x87\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32h.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x85\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32g.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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(\x05:\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(\x05:\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\xd4\x0b\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x02 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x03 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x05 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x06 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x07 \x03(\x08\x12\xa0\x01\n$content_union_1_type_dict_of_str_int\x18\x08 \x03(\x0b\x32r.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\t \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\n \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0b \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\x0c \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\r \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0e \x03(\x0c\x12\xa0\x01\n$content_union_2_type_dict_of_str_int\x18\x0f \x03(\x0b\x32r.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xa4\x01\n&content_union_2_type_dict_of_int_float\x18\x10 \x03(\x0b\x32t.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xa6\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x11 \x03(\x0b\x32u.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\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\xbf\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(\x05\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\x86\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32\x66.aea.fetchai.t_protocol_no_ct.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(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' ), ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pt_Performative", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_bytes", index=0, number=1, type=12, @@ -52,7 +52,7 @@ ), _descriptor.FieldDescriptor( name="content_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_int", index=1, number=2, type=5, @@ -70,7 +70,7 @@ ), _descriptor.FieldDescriptor( name="content_float", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_float", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_float", index=2, number=3, type=2, @@ -88,7 +88,7 @@ ), _descriptor.FieldDescriptor( name="content_bool", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_bool", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_bool", index=3, number=4, type=8, @@ -106,7 +106,7 @@ ), _descriptor.FieldDescriptor( name="content_str", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_str", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative.content_str", index=4, number=5, type=9, @@ -131,20 +131,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=813, - serialized_end=953, + serialized_start=757, + serialized_end=897, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pct_Performative", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_set_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_bytes", index=0, number=1, type=12, @@ -162,7 +162,7 @@ ), _descriptor.FieldDescriptor( name="content_set_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_int", index=1, number=2, type=5, @@ -180,7 +180,7 @@ ), _descriptor.FieldDescriptor( name="content_set_float", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_float", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_float", index=2, number=3, type=2, @@ -198,7 +198,7 @@ ), _descriptor.FieldDescriptor( name="content_set_bool", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_bool", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_bool", index=3, number=4, type=8, @@ -216,7 +216,7 @@ ), _descriptor.FieldDescriptor( name="content_set_str", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_str", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_str", index=4, number=5, type=9, @@ -234,7 +234,7 @@ ), _descriptor.FieldDescriptor( name="content_list_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_bytes", index=5, number=6, type=12, @@ -252,7 +252,7 @@ ), _descriptor.FieldDescriptor( name="content_list_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_int", index=6, number=7, type=5, @@ -270,7 +270,7 @@ ), _descriptor.FieldDescriptor( name="content_list_float", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_float", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_float", index=7, number=8, type=2, @@ -288,7 +288,7 @@ ), _descriptor.FieldDescriptor( name="content_list_bool", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_bool", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_bool", index=8, number=9, type=8, @@ -306,7 +306,7 @@ ), _descriptor.FieldDescriptor( name="content_list_str", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_str", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_str", index=9, number=10, type=9, @@ -331,20 +331,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=956, - serialized_end=1252, + serialized_start=900, + serialized_end=1196, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = _descriptor.Descriptor( name="ContentDictIntBytesEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.key", index=0, number=1, type=5, @@ -362,7 +362,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.value", index=1, number=2, type=12, @@ -387,20 +387,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3488, - serialized_end=3546, + serialized_start=3312, + serialized_end=3370, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = _descriptor.Descriptor( name="ContentDictIntIntEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.key", index=0, number=1, type=5, @@ -418,7 +418,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.value", index=1, number=2, type=5, @@ -443,20 +443,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3548, - serialized_end=3604, + serialized_start=3372, + serialized_end=3428, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = _descriptor.Descriptor( name="ContentDictIntFloatEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.key", index=0, number=1, type=5, @@ -474,7 +474,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.value", index=1, number=2, type=2, @@ -499,20 +499,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3606, - serialized_end=3664, + serialized_start=3430, + serialized_end=3488, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = _descriptor.Descriptor( name="ContentDictIntBoolEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.key", index=0, number=1, type=5, @@ -530,7 +530,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.value", index=1, number=2, type=8, @@ -555,20 +555,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3666, - serialized_end=3723, + serialized_start=3490, + serialized_end=3547, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = _descriptor.Descriptor( name="ContentDictIntStrEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.key", index=0, number=1, type=5, @@ -586,7 +586,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.value", index=1, number=2, type=9, @@ -611,20 +611,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3725, - serialized_end=3781, + serialized_start=3549, + serialized_end=3605, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = _descriptor.Descriptor( name="ContentDictBoolBytesEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.key", index=0, number=1, type=8, @@ -642,7 +642,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.value", index=1, number=2, type=12, @@ -667,20 +667,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3783, - serialized_end=3842, + serialized_start=3607, + serialized_end=3666, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = _descriptor.Descriptor( name="ContentDictBoolIntEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.key", index=0, number=1, type=8, @@ -698,7 +698,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.value", index=1, number=2, type=5, @@ -723,20 +723,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3844, - serialized_end=3901, + serialized_start=3668, + serialized_end=3725, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = _descriptor.Descriptor( name="ContentDictBoolFloatEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.key", index=0, number=1, type=8, @@ -754,7 +754,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.value", index=1, number=2, type=2, @@ -779,20 +779,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3903, - serialized_end=3962, + serialized_start=3727, + serialized_end=3786, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = _descriptor.Descriptor( name="ContentDictBoolBoolEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.key", index=0, number=1, type=8, @@ -810,7 +810,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.value", index=1, number=2, type=8, @@ -835,20 +835,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=3964, - serialized_end=4022, + serialized_start=3788, + serialized_end=3846, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = _descriptor.Descriptor( name="ContentDictBoolStrEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.key", index=0, number=1, type=8, @@ -866,7 +866,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.value", index=1, number=2, type=9, @@ -891,20 +891,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4024, - serialized_end=4081, + serialized_start=3848, + serialized_end=3905, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = _descriptor.Descriptor( name="ContentDictStrBytesEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.key", index=0, number=1, type=9, @@ -922,7 +922,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.value", index=1, number=2, type=12, @@ -947,20 +947,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4083, - serialized_end=4141, + serialized_start=3907, + serialized_end=3965, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = _descriptor.Descriptor( name="ContentDictStrIntEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.key", index=0, number=1, type=9, @@ -978,7 +978,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.value", index=1, number=2, type=5, @@ -1003,20 +1003,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4143, - serialized_end=4199, + serialized_start=3967, + serialized_end=4023, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = _descriptor.Descriptor( name="ContentDictStrFloatEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.key", index=0, number=1, type=9, @@ -1034,7 +1034,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.value", index=1, number=2, type=2, @@ -1059,20 +1059,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4201, - serialized_end=4259, + serialized_start=4025, + serialized_end=4083, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = _descriptor.Descriptor( name="ContentDictStrBoolEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.key", index=0, number=1, type=9, @@ -1090,7 +1090,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.value", index=1, number=2, type=8, @@ -1115,20 +1115,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4261, - serialized_end=4318, + serialized_start=4085, + serialized_end=4142, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = _descriptor.Descriptor( name="ContentDictStrStrEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.key", index=0, number=1, type=9, @@ -1146,7 +1146,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.value", index=1, number=2, type=9, @@ -1171,20 +1171,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4320, - serialized_end=4376, + serialized_start=4144, + serialized_end=4200, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Pmt_Performative", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_dict_int_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_bytes", index=0, number=1, type=11, @@ -1202,7 +1202,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_int", index=1, number=2, type=11, @@ -1220,7 +1220,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_float", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_float", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_float", index=2, number=3, type=11, @@ -1238,7 +1238,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_bool", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_bool", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_bool", index=3, number=4, type=11, @@ -1256,7 +1256,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_int_str", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_str", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_str", index=4, number=5, type=11, @@ -1274,7 +1274,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_bytes", index=5, number=6, type=11, @@ -1292,7 +1292,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_int", index=6, number=7, type=11, @@ -1310,7 +1310,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_float", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_float", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_float", index=7, number=8, type=11, @@ -1328,7 +1328,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_bool", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_bool", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_bool", index=8, number=9, type=11, @@ -1346,7 +1346,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_bool_str", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_str", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_str", index=9, number=10, type=11, @@ -1364,7 +1364,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_bytes", index=10, number=11, type=11, @@ -1382,7 +1382,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_int", index=11, number=12, type=11, @@ -1400,7 +1400,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_float", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_float", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_float", index=12, number=13, type=11, @@ -1418,7 +1418,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_bool", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_bool", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_bool", index=13, number=14, type=11, @@ -1436,7 +1436,7 @@ ), _descriptor.FieldDescriptor( name="content_dict_str_str", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_str", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_str", index=14, number=15, type=11, @@ -1477,20 +1477,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1255, - serialized_end=4376, + serialized_start=1199, + serialized_end=4200, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( name="ContentUnion1TypeDictOfStrIntEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.key", index=0, number=1, type=9, @@ -1508,7 +1508,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.value", index=1, number=2, type=5, @@ -1533,20 +1533,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5620, - serialized_end=5688, + serialized_start=5412, + serialized_end=5480, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfStrIntEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.key", index=0, number=1, type=9, @@ -1564,7 +1564,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.value", index=1, number=2, type=5, @@ -1589,20 +1589,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5690, - serialized_end=5758, + serialized_start=5482, + serialized_end=5550, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfIntFloatEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.key", index=0, number=1, type=5, @@ -1620,7 +1620,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.value", index=1, number=2, type=2, @@ -1645,20 +1645,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5760, - serialized_end=5830, + serialized_start=5552, + serialized_end=5622, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _descriptor.Descriptor( name="ContentUnion2TypeDictOfBoolBytesEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.key", index=0, number=1, type=8, @@ -1676,7 +1676,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.value", index=1, number=2, type=12, @@ -1701,20 +1701,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5832, - serialized_end=5903, + serialized_start=5624, + serialized_end=5695, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Mt_Performative", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_union_1_type_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_bytes", index=0, number=1, type=12, @@ -1732,7 +1732,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_int", index=1, number=2, type=5, @@ -1750,7 +1750,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_float", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_float", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_float", index=2, number=3, type=2, @@ -1768,7 +1768,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_bool", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_bool", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_bool", index=3, number=4, type=8, @@ -1786,7 +1786,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_str", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_str", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_str", index=4, number=5, type=9, @@ -1804,7 +1804,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_set_of_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_set_of_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_set_of_int", index=5, number=6, type=5, @@ -1822,7 +1822,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_list_of_bool", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_list_of_bool", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_list_of_bool", index=6, number=7, type=8, @@ -1840,7 +1840,7 @@ ), _descriptor.FieldDescriptor( name="content_union_1_type_dict_of_str_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_dict_of_str_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_dict_of_str_int", index=7, number=8, type=11, @@ -1858,7 +1858,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_bytes", index=8, number=9, type=12, @@ -1876,7 +1876,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_int", index=9, number=10, type=5, @@ -1894,7 +1894,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_set_of_str", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_str", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_str", index=10, number=11, type=9, @@ -1912,7 +1912,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_float", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_float", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_float", index=11, number=12, type=2, @@ -1930,7 +1930,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_bool", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_bool", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_bool", index=12, number=13, type=8, @@ -1948,7 +1948,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_list_of_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_bytes", index=13, number=14, type=12, @@ -1966,7 +1966,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_str_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_str_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_str_int", index=14, number=15, type=11, @@ -1984,7 +1984,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_int_float", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_int_float", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_int_float", index=15, number=16, type=11, @@ -2002,7 +2002,7 @@ ), _descriptor.FieldDescriptor( name="content_union_2_type_dict_of_bool_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_bool_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_bool_bytes", index=16, number=17, type=11, @@ -2032,20 +2032,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=4379, - serialized_end=5903, + serialized_start=4203, + serialized_end=5695, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = _descriptor.Descriptor( name="ContentODictStrIntEntry", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="key", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry.key", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry.key", index=0, number=1, type=9, @@ -2063,7 +2063,7 @@ ), _descriptor.FieldDescriptor( name="value", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry.value", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry.value", index=1, number=2, type=5, @@ -2088,20 +2088,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6304, - serialized_end=6361, + serialized_start=6088, + serialized_end=6145, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _descriptor.Descriptor( name="Performative_O_Performative", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="content_o_bool", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_bool", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_bool", index=0, number=1, type=8, @@ -2119,7 +2119,7 @@ ), _descriptor.FieldDescriptor( name="content_o_bool_is_set", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_bool_is_set", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_bool_is_set", index=1, number=2, type=8, @@ -2137,7 +2137,7 @@ ), _descriptor.FieldDescriptor( name="content_o_set_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_set_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_set_int", index=2, number=3, type=5, @@ -2155,7 +2155,7 @@ ), _descriptor.FieldDescriptor( name="content_o_set_int_is_set", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_set_int_is_set", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_set_int_is_set", index=3, number=4, type=8, @@ -2173,7 +2173,7 @@ ), _descriptor.FieldDescriptor( name="content_o_list_bytes", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_list_bytes", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_list_bytes", index=4, number=5, type=12, @@ -2191,7 +2191,7 @@ ), _descriptor.FieldDescriptor( name="content_o_list_bytes_is_set", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_list_bytes_is_set", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_list_bytes_is_set", index=5, number=6, type=8, @@ -2209,7 +2209,7 @@ ), _descriptor.FieldDescriptor( name="content_o_dict_str_int", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_dict_str_int", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_dict_str_int", index=6, number=7, type=11, @@ -2227,7 +2227,7 @@ ), _descriptor.FieldDescriptor( name="content_o_dict_str_int_is_set", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_dict_str_int_is_set", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.content_o_dict_str_int_is_set", index=7, number=8, type=8, @@ -2254,13 +2254,13 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=5906, - serialized_end=6361, + serialized_start=5698, + serialized_end=6145, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = _descriptor.Descriptor( name="Performative_Empty_Contents_Performative", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Empty_Contents_Performative", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Empty_Contents_Performative", filename=None, file=DESCRIPTOR, containing_type=None, @@ -2273,20 +2273,20 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=6363, - serialized_end=6405, + serialized_start=6147, + serialized_end=6189, ) _TPROTOCOLNOCTMESSAGE = _descriptor.Descriptor( name="TProtocolNoCtMessage", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage", filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name="performative_empty_contents", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_empty_contents", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_empty_contents", index=0, number=5, type=11, @@ -2304,7 +2304,7 @@ ), _descriptor.FieldDescriptor( name="performative_mt", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_mt", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_mt", index=1, number=6, type=11, @@ -2322,7 +2322,7 @@ ), _descriptor.FieldDescriptor( name="performative_o", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_o", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_o", index=2, number=7, type=11, @@ -2340,7 +2340,7 @@ ), _descriptor.FieldDescriptor( name="performative_pct", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_pct", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_pct", index=3, number=8, type=11, @@ -2358,7 +2358,7 @@ ), _descriptor.FieldDescriptor( name="performative_pmt", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_pmt", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_pmt", index=4, number=9, type=11, @@ -2376,7 +2376,7 @@ ), _descriptor.FieldDescriptor( name="performative_pt", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_pt", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative_pt", index=5, number=10, type=11, @@ -2410,14 +2410,14 @@ oneofs=[ _descriptor.OneofDescriptor( name="performative", - full_name="fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative", + full_name="aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.performative", index=0, containing_type=None, fields=[], ), ], - serialized_start=65, - serialized_end=6421, + serialized_start=57, + serialized_end=6205, ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE.containing_type = ( @@ -2657,7 +2657,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pt_Performative) ), ), Performative_Pct_Performative=_reflection.GeneratedProtocolMessageType( @@ -2666,7 +2666,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pct_Performative) ), ), Performative_Pmt_Performative=_reflection.GeneratedProtocolMessageType( @@ -2679,7 +2679,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) ), ), ContentDictIntIntEntry=_reflection.GeneratedProtocolMessageType( @@ -2688,7 +2688,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) ), ), ContentDictIntFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -2697,7 +2697,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) ), ), ContentDictIntBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -2706,7 +2706,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) ), ), ContentDictIntStrEntry=_reflection.GeneratedProtocolMessageType( @@ -2715,7 +2715,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) ), ), ContentDictBoolBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -2724,7 +2724,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) ), ), ContentDictBoolIntEntry=_reflection.GeneratedProtocolMessageType( @@ -2733,7 +2733,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) ), ), ContentDictBoolFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -2742,7 +2742,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) ), ), ContentDictBoolBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -2751,7 +2751,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) ), ), ContentDictBoolStrEntry=_reflection.GeneratedProtocolMessageType( @@ -2760,7 +2760,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) ), ), ContentDictStrBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -2769,7 +2769,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) ), ), ContentDictStrIntEntry=_reflection.GeneratedProtocolMessageType( @@ -2778,7 +2778,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) ), ), ContentDictStrFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -2787,7 +2787,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) ), ), ContentDictStrBoolEntry=_reflection.GeneratedProtocolMessageType( @@ -2796,7 +2796,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) ), ), ContentDictStrStrEntry=_reflection.GeneratedProtocolMessageType( @@ -2805,12 +2805,12 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) ), ), DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Pmt_Performative) ), ), Performative_Mt_Performative=_reflection.GeneratedProtocolMessageType( @@ -2823,7 +2823,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) ), ), ContentUnion2TypeDictOfStrIntEntry=_reflection.GeneratedProtocolMessageType( @@ -2832,7 +2832,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) ), ), ContentUnion2TypeDictOfIntFloatEntry=_reflection.GeneratedProtocolMessageType( @@ -2841,7 +2841,7 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) ), ), ContentUnion2TypeDictOfBoolBytesEntry=_reflection.GeneratedProtocolMessageType( @@ -2850,12 +2850,12 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) ), ), DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Mt_Performative) ), ), Performative_O_Performative=_reflection.GeneratedProtocolMessageType( @@ -2868,12 +2868,12 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry) ), ), DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_O_Performative) ), ), Performative_Empty_Contents_Performative=_reflection.GeneratedProtocolMessageType( @@ -2882,12 +2882,12 @@ dict( DESCRIPTOR=_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Empty_Contents_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage.Performative_Empty_Contents_Performative) ), ), DESCRIPTOR=_TPROTOCOLNOCTMESSAGE, __module__="t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:fetchai.aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.t_protocol_no_ct.TProtocolNoCtMessage) ), ) _sym_db.RegisterMessage(TProtocolNoCtMessage) diff --git a/tests/data/hashes.csv b/tests/data/hashes.csv index 7fe00a5120..7052a44c49 100644 --- a/tests/data/hashes.csv +++ b/tests/data/hashes.csv @@ -2,5 +2,7 @@ dummy_author/agents/dummy_aea,QmQRx5aPogjbzyV1GKFByfPpCENu7A1E1GGC9arXCKnzsD dummy_author/skills/dummy_skill,QmQpimGAQ56nihemchgE29Mfan57YdGixj3kat69FGkrjK fetchai/connections/dummy_connection,QmT7zw62fDK1mmwYqTvw4pWqFg8Fc1DYQHUxcxd7sqZiLu fetchai/contracts/dummy_contract,QmQr6BLGQuj45r55S5Bo8xqP8ggr4hbmJBbHUJ14uh1qjD +fetchai/protocols/t_protocol,QmPGP1dQWJ6U6vCDN3NU1z3RcEGiJCzP8Utti5nLTdgr88 +fetchai/protocols/t_protocol_no_ct,QmcNnuABiHcGoN3kBPsBGG1BW8kvN3Ypboh51p3ujVLVtL fetchai/skills/dependencies_skill,QmaLBgnwTXdTzue7H3UbVuKmPxaqoK4Azpj85tKTdQi29j fetchai/skills/exception_skill,QmT2RiM95EVbXTD31zU6pKKoERkrCLuyxpAJfkm3dTsTp2 diff --git a/tests/test_protocols/test_generator/test_generator.py b/tests/test_protocols/test_generator/test_generator.py index 94f5b75b2e..2c8ba4296a 100644 --- a/tests/test_protocols/test_generator/test_generator.py +++ b/tests/test_protocols/test_generator/test_generator.py @@ -1204,7 +1204,7 @@ def test_protocol_buffer_schema_str(self): print(proto_buff_schema_str) expected = ( 'syntax = "proto3";\n\n' - "package fetchai.aea.some_author.some_name;\n\n" + "package aea.some_author.some_name;\n\n" "message SomeNameMessage{\n\n" " // Custom Types\n" " message SomeCustomType{\n" From 4dd68fa7c6c03b962655719f862b5b40c653e706 Mon Sep 17 00:00:00 2001 From: Lokman Rahmani Date: Fri, 18 Sep 2020 14:10:06 +0100 Subject: [PATCH 025/155] [wip] all vars as placeholders --- scripts/acn/k8s/deployment.yaml | 78 ++++++++++++++++++++++++++++++ scripts/acn/k8s/dns.yaml | 13 +++++ scripts/acn/k8s/istio.yaml | 49 +++++++++++++++++++ scripts/acn/k8s/secret.yaml | 7 +++ scripts/acn/k8s_deploy_acn_node.py | 34 +++++++++++++ 5 files changed, 181 insertions(+) create mode 100644 scripts/acn/k8s/deployment.yaml create mode 100644 scripts/acn/k8s/dns.yaml create mode 100644 scripts/acn/k8s/istio.yaml create mode 100644 scripts/acn/k8s/secret.yaml create mode 100644 scripts/acn/k8s_deploy_acn_node.py diff --git a/scripts/acn/k8s/deployment.yaml b/scripts/acn/k8s/deployment.yaml new file mode 100644 index 0000000000..26065b3c5d --- /dev/null +++ b/scripts/acn/k8s/deployment.yaml @@ -0,0 +1,78 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: ph-deployment-name-here + namespace: ph-cluster-namespace-here + labels: + app: ph-deployment-name-here +spec: + replicas: 1 + selector: + matchLabels: + app: ph-deployment-name-here + template: + metadata: + labels: + app: ph-deployment-name-here + + spec: + initContainers: + - name: check-entry-peer + image: subfuzion/netcat + command: ['sh', '-c', + 'if [ -z "${LATEST_ENTRY_PEER_HOST}" ]; then exit 0; fi; until nc -w 2 -zv ${LATEST_ENTRY_PEER_HOST} ${LATEST_ENTRY_PEER_PORT}; do echo waiting for ${LATEST_ENTRY_PEER_HOST}:${LATEST_ENTRY_PEER_PORT} ; sleep 2; done;'] + env: + - name: LATEST_ENTRY_PEER_HOST + value: ph-latest-entry-peer-host-here + - name: LATEST_ENTRY_PEER_PORT + value: ph-latest-entry-peer-port-here + + containers: + - image: ph-gcr-image-with-tag-here + name: ph-container-name-here + ports: + - containerPort: ph-node-port-number-here + - containerPort: ph-node-delegate-port-number-here + + resources: + requests: + memory: "64Mi" + cpu: "150m" + limits: + memory: "4000Mi" + cpu: "2000m" + + env: + - name: AEA_P2P_ID + valueFrom: + secretKeyRef: + name: ph-node-priv-key-name-here + key: priv-key + - name: AEA_P2P_URI_PUBLIC + value: ph-node-external-uri-here + - name: AEA_P2P_URI + value: ph-node-local-uri-here + - name: AEA_P2P_DELEGATE_URI + value: ph-node-delegate-uri-here + - name: AEA_P2P_ENTRY_URIS + value: ph-node-entry-peers-list-here + + restartPolicy: Always +--- +apiVersion: v1 +kind: Service +metadata: + name: ph-deployment-name-here + namespace: ph-cluster-namespace-here +spec: + selector: + app: ph-deployment-name-here + ports: + - name: libp2p + protocol: TCP + port: ph-node-port-number-here + targetPort: ph-node-port-number-here + - name: tcp + protocol: TCP + port: ph-node-delegate-port-number-here + targetPort: ph-node-delegate-port-number-here \ No newline at end of file diff --git a/scripts/acn/k8s/dns.yaml b/scripts/acn/k8s/dns.yaml new file mode 100644 index 0000000000..c8cd85ac6e --- /dev/null +++ b/scripts/acn/k8s/dns.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: externaldns.k8s.io/v1alpha1 +kind: DNSEndpoint +metadata: + name: ph-deployment-name-here + namespace: ph-cluster-namespace-here +spec: + endpoints: + - dnsName: ph-dnsname-here + recordTTL: 180 + recordType: CNAME + targets: + - ph-dnsname-here diff --git a/scripts/acn/k8s/istio.yaml b/scripts/acn/k8s/istio.yaml new file mode 100644 index 0000000000..856efede51 --- /dev/null +++ b/scripts/acn/k8s/istio.yaml @@ -0,0 +1,49 @@ +--- +apiVersion: networking.istio.io/v1alpha3 +kind: Gateway +metadata: + name: ph-deployment-name-here + namespace: ph-cluster-namspace-here +spec: + selector: + app: istio-fetchpubig + istio: ingressgateway + servers: + - port: + name: libp2p + number: node-port-number-here + protocol: TCP + hosts: + - agents-p2p-dht.sandbox.fetch-ai.com + - port: + name: tcp + number: node-delegate-port-number-here + protocol: TCP + hosts: + - agents-p2p-dht.sandbox.fetch-ai.com +--- +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: ph-deployment-name-here + namespace: ph-cluster-namespace-here +spec: + gateways: + - ph-deployment-name-here + hosts: + - agents-p2p-dht.sandbox.fetch-ai.com + tcp: + - match: + - port: node-port-number-here + route: + - destination: + host: ph-deployment-name-here + port: + number: node-port-number-here + - match: + - port: node-delegate-port-number-here + route: + - destination: + host: ph-deployment-name-here + port: + number: node-delegate-port-number-here diff --git a/scripts/acn/k8s/secret.yaml b/scripts/acn/k8s/secret.yaml new file mode 100644 index 0000000000..f9ee890243 --- /dev/null +++ b/scripts/acn/k8s/secret.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: node-priv-key-name-here +type: Opaque +data: + priv-key: based64-encode-private-key-here diff --git a/scripts/acn/k8s_deploy_acn_node.py b/scripts/acn/k8s_deploy_acn_node.py new file mode 100644 index 0000000000..60e83a8c2d --- /dev/null +++ b/scripts/acn/k8s_deploy_acn_node.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2019 Fetch.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. +# +# ------------------------------------------------------------------------------ +""" Deploy an ACN libp2p node to a kubernetes cluster """ + +from typing import Dict + +k8s_deployment_name = "ph-deployment-name-here" +k8s_cluster_namespace = "ph-cluster-namespace-here" +k8s_check_listening_host = "ph-latest-entry-peer-host-here" +k8s_check_listening_port = "ph-latest-entry-peer-port-here" +k8s_docker_image_url = "ph-gcr-image-with-tag-here" +k8s_docker_container_name = "ph-container-name-here" + +node_port_number = "ph-node-port-number-here" +node_port_number_delegate = "ph-node-delegate-port-number-here" +config : Dict[str, str] = { + +} From 57ffb20d3681331c41f49e2870b432630bcac933 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Tue, 22 Sep 2020 17:04:42 +0200 Subject: [PATCH 026/155] fix linting checks --- scripts/generate_all_protocols.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/generate_all_protocols.py b/scripts/generate_all_protocols.py index 22b121ed35..077b9de953 100755 --- a/scripts/generate_all_protocols.py +++ b/scripts/generate_all_protocols.py @@ -19,6 +19,8 @@ # ------------------------------------------------------------------------------ """ +Generate all the protocols from their specifications. + This script takes all the protocol specification (scraped from the protocol README) and calls the `aea generate protocol` command. @@ -28,6 +30,7 @@ It requires the `aea` package, `black` and `isort` tools. """ + import logging import operator import os From 50d53110450e241f45fdda294d808e4114683eac Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Tue, 22 Sep 2020 17:04:54 +0200 Subject: [PATCH 027/155] update language-agnostic protocol definitions with new schema. --- docs/language-agnostic-definition.md | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/docs/language-agnostic-definition.md b/docs/language-agnostic-definition.md index 3b0d059ef9..a9fb0fea81 100644 --- a/docs/language-agnostic-definition.md +++ b/docs/language-agnostic-definition.md @@ -31,16 +31,15 @@ The format for the above fields, except `message`, is specified below. For those ``` proto - // Meta fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; - oneof performative{ - ... + message DialogueMessage { + int32 message_id = 1; + string dialogue_starter_reference = 2; + string dialogue_responder_reference = 3; + int32 target = 4; + bytes content = 5; } ``` - where `...` is replaced with the protocol specific performatives (see here for details). + 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). @@ -84,11 +83,6 @@ message DefaultMessage{ } - // Standard DefaultMessage fields - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; oneof performative{ Bytes_Performative bytes = 5; Error_Performative error = 6; From 8ec222a8ed414569ffe06390b391440443151807 Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Tue, 22 Sep 2020 17:37:01 +0200 Subject: [PATCH 028/155] fix linting and hashes --- aea/protocols/base.py | 3 ++- aea/protocols/default/__init__.py | 1 + aea/protocols/default/message.py | 1 + aea/protocols/default/protocol.yaml | 4 ++-- aea/protocols/signing/__init__.py | 1 + aea/protocols/signing/message.py | 1 + aea/protocols/signing/protocol.yaml | 4 ++-- aea/protocols/state_update/__init__.py | 1 + aea/protocols/state_update/message.py | 1 + aea/protocols/state_update/protocol.yaml | 4 ++-- aea/registries/base.py | 8 +++++-- .../fetchai/protocols/contract_api/README.md | 2 +- .../protocols/contract_api/__init__.py | 1 + .../fetchai/protocols/contract_api/message.py | 1 + .../protocols/contract_api/protocol.yaml | 10 ++++----- .../protocols/contract_api/serialization.py | 16 ++++++++------ packages/fetchai/protocols/fipa/__init__.py | 1 + packages/fetchai/protocols/fipa/message.py | 1 + packages/fetchai/protocols/fipa/protocol.yaml | 6 ++--- .../fetchai/protocols/fipa/serialization.py | 9 ++++---- packages/fetchai/protocols/gym/README.md | 2 +- packages/fetchai/protocols/gym/__init__.py | 1 + packages/fetchai/protocols/gym/message.py | 1 + packages/fetchai/protocols/gym/protocol.yaml | 10 ++++----- .../fetchai/protocols/gym/serialization.py | 6 ++--- packages/fetchai/protocols/http/__init__.py | 1 + packages/fetchai/protocols/http/message.py | 1 + packages/fetchai/protocols/http/protocol.yaml | 6 ++--- .../fetchai/protocols/http/serialization.py | 6 ++--- .../fetchai/protocols/ledger_api/__init__.py | 1 + .../fetchai/protocols/ledger_api/message.py | 1 + .../protocols/ledger_api/protocol.yaml | 6 ++--- .../protocols/ledger_api/serialization.py | 18 ++++++++------- .../fetchai/protocols/ml_trade/__init__.py | 1 + .../fetchai/protocols/ml_trade/message.py | 1 + .../fetchai/protocols/ml_trade/protocol.yaml | 6 ++--- .../protocols/ml_trade/serialization.py | 9 ++++---- .../fetchai/protocols/oef_search/__init__.py | 1 + .../fetchai/protocols/oef_search/message.py | 1 + .../protocols/oef_search/protocol.yaml | 6 ++--- .../protocols/oef_search/serialization.py | 16 ++++++++------ packages/fetchai/protocols/tac/__init__.py | 1 + packages/fetchai/protocols/tac/message.py | 1 + packages/fetchai/protocols/tac/protocol.yaml | 6 ++--- .../fetchai/protocols/tac/serialization.py | 6 ++--- packages/hashes.csv | 22 +++++++++---------- scripts/generate_all_protocols.py | 1 + tests/data/generator/t_protocol/protocol.yaml | 2 +- .../generator/t_protocol/serialization.py | 3 ++- .../generator/t_protocol_no_ct/protocol.yaml | 2 +- .../t_protocol_no_ct/serialization.py | 3 ++- tests/data/hashes.csv | 4 ++-- .../test_oef/test_communication.py | 3 ++- 53 files changed, 133 insertions(+), 98 deletions(-) diff --git a/aea/protocols/base.py b/aea/protocols/base.py index 50f86ee4f4..b942d88f21 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -34,7 +34,8 @@ from aea.configurations.base import ComponentType, ProtocolConfig, PublicId from aea.configurations.loader import load_component_configuration from aea.exceptions import enforce -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage logger = logging.getLogger(__name__) diff --git a/aea/protocols/default/__init__.py b/aea/protocols/default/__init__.py index 8b6776854d..84923b00ef 100644 --- a/aea/protocols/default/__init__.py +++ b/aea/protocols/default/__init__.py @@ -22,4 +22,5 @@ from aea.protocols.default.message import DefaultMessage from aea.protocols.default.serialization import DefaultSerializer + DefaultMessage.serializer = DefaultSerializer diff --git a/aea/protocols/default/message.py b/aea/protocols/default/message.py index 547286e375..b6c2b75073 100644 --- a/aea/protocols/default/message.py +++ b/aea/protocols/default/message.py @@ -27,6 +27,7 @@ from aea.protocols.base import Message from aea.protocols.default.custom_types import ErrorCode as CustomErrorCode + logger = logging.getLogger("aea.protocols.default.message") DEFAULT_BODY_SIZE = 4 diff --git a/aea/protocols/default/protocol.yaml b/aea/protocols/default/protocol.yaml index c8df1426cb..9a3b55535c 100644 --- a/aea/protocols/default/protocol.yaml +++ b/aea/protocols/default/protocol.yaml @@ -7,12 +7,12 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmP3q9463opixzdv17QXkCSQvgR8KJXgLAVkfUPpdHJzPv - __init__.py: QmPMtKUrzVJp594VqNuapJzCesWLQ6Awjqv2ufG3wKNRmH + __init__.py: QmWpWuGcXu2SodVGUZiAdMrF8Tn7MAPDbiGh7vd9nEfEX6 custom_types.py: QmRcgwDdTxkSHyfF9eoMtsb5P5GJDm4oyLq5W6ZBko1MFU default.proto: QmbbAXpav8jfU1r59afGbLAj3FpPXEwWuezPocAMyqcfax default_pb2.py: QmT2nZidwAd5jkXyx3UWkapUpsiEfjwUr6a8DKboSujokt dialogues.py: Qmc991snbS7DwFxo1cKcq1rQ2uj7y8ukp14kfe2zve387C - message.py: QmeaadvKib9QqpjZgd7NiDUqGRpC2eZPVpgq1dY3PYacht + message.py: QmWzSGcSeRGaHERQg6E8QaYDiCqmeJYdFqE7rrwMBP7mP2 serialization.py: QmcRk22hZ49s2HLUNPXBYWTnUkFjuNnVwVWp3yfxfbaQDd fingerprint_ignore_patterns: [] dependencies: diff --git a/aea/protocols/signing/__init__.py b/aea/protocols/signing/__init__.py index a64e961fd6..7fd69707d7 100644 --- a/aea/protocols/signing/__init__.py +++ b/aea/protocols/signing/__init__.py @@ -22,4 +22,5 @@ from aea.protocols.signing.message import SigningMessage from aea.protocols.signing.serialization import SigningSerializer + SigningMessage.serializer = SigningSerializer diff --git a/aea/protocols/signing/message.py b/aea/protocols/signing/message.py index ea9ef07339..cf7cd943af 100644 --- a/aea/protocols/signing/message.py +++ b/aea/protocols/signing/message.py @@ -34,6 +34,7 @@ ) from aea.protocols.signing.custom_types import Terms as CustomTerms + logger = logging.getLogger("aea.protocols.signing.message") DEFAULT_BODY_SIZE = 4 diff --git a/aea/protocols/signing/protocol.yaml b/aea/protocols/signing/protocol.yaml index 00bdb60def..375594d1a5 100644 --- a/aea/protocols/signing/protocol.yaml +++ b/aea/protocols/signing/protocol.yaml @@ -7,10 +7,10 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmSoa5dnxz53GWpWT2VvcRG4asVbzA8JzguiVgwqiLtguM - __init__.py: QmcCL3TTdvd8wxYKzf2d3cgKEtY9RzLjPCn4hex4wmb6h6 + __init__.py: Qmd7JYjcrD95jdYfSZs6j7UX5TPZfPYXuTFrUzS3FHCxhS custom_types.py: Qmc7sAyCQbAaVs5dZf9hFkTrB2BG8VAioWzbyKBAybrQ1J dialogues.py: QmQ1WKs3Dn15oDSwpc4N8hdADLxrn76U4X5SiLAmyGiPPY - message.py: QmWMUnBpZxBq1PDZ6JsR9vwaKdywBHvL5hghekWeph8j9B + message.py: QmP3La3Bh5Q8bbecXWpDHj25rp7Eiv6nuvVNMqURSp4Dn4 serialization.py: QmT4wm2vP8QUFYCCaCCNNe4kMGgPCsFqkBTvKJFUYDJC4S signing.proto: QmZN9CmcfXCBiMQd9GTG81LadsbVQQ7j5pLFxEiQsQ4Sqk signing_pb2.py: QmYQH8PDeC25ysrxeqh4nNv38bUL7jv9gRhta9gaNiXLL2 diff --git a/aea/protocols/state_update/__init__.py b/aea/protocols/state_update/__init__.py index 0ede0392d3..7e271c83c4 100644 --- a/aea/protocols/state_update/__init__.py +++ b/aea/protocols/state_update/__init__.py @@ -22,4 +22,5 @@ from aea.protocols.state_update.message import StateUpdateMessage from aea.protocols.state_update.serialization import StateUpdateSerializer + StateUpdateMessage.serializer = StateUpdateSerializer diff --git a/aea/protocols/state_update/message.py b/aea/protocols/state_update/message.py index fbec5d3797..29fb679368 100644 --- a/aea/protocols/state_update/message.py +++ b/aea/protocols/state_update/message.py @@ -26,6 +26,7 @@ from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message + logger = logging.getLogger("aea.protocols.state_update.message") DEFAULT_BODY_SIZE = 4 diff --git a/aea/protocols/state_update/protocol.yaml b/aea/protocols/state_update/protocol.yaml index d6858c75bb..c996d46d8f 100644 --- a/aea/protocols/state_update/protocol.yaml +++ b/aea/protocols/state_update/protocol.yaml @@ -7,9 +7,9 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: Qmc12hnCshAE3TL9ba4vo6L8ZZhynyfhEUoStJggRrbimc - __init__.py: Qma2opyN54gwTpkVV1E14jjeMmMfoqgE6XMM9LsvGuTdkm + __init__.py: QmUrvqDr24Ph1nnUqjTUPh9QoftuTsef3Dj3yzPUMY38fu dialogues.py: Qmd59WgpFccLn1zhpLdwm3zDCmCsjSoQXVn6M7PgFwwkgR - message.py: Qmc8mnCC1K7yb1CTY3t1RXbktmg54bZ3nXVqq1KQES8jJf + message.py: QmWiFo7D5szGwdvewzb7sfawH3k2i3NHfrAFfdSRvWRNJf serialization.py: QmS3Tesi18wvwoxjgC4iiqkdJUMAsYSiz8Vq6oHNzr3kxh state_update.proto: QmX1YJaiCeEdURVzu8qx5w2gq5gs2V9cy8dJ7jg79poQLs state_update_pb2.py: QmUgSCEzb6gZZBBYyLqMXxZG2Awt8znjQXeHMuX7DDdTpE diff --git a/aea/registries/base.py b/aea/registries/base.py index 6daffeea9b..a8da064dba 100644 --- a/aea/registries/base.py +++ b/aea/registries/base.py @@ -142,13 +142,17 @@ def register( # pylint: disable=arguments-differ,unused-argument raise ValueError(f"Item already registered with item id '{public_id}'") self._public_id_to_item[public_id] = item - def unregister(self, public_id: PublicId) -> None: + def unregister( + self, public_id: PublicId + ) -> None: # pylint: disable=arguments-differ,unused-argument """Unregister an item.""" if public_id not in self._public_id_to_item: raise ValueError(f"No item registered with item id '{public_id}'") self._public_id_to_item.pop(public_id) - def fetch(self, public_id: PublicId) -> Optional[Item]: + def fetch( + self, public_id: PublicId + ) -> Optional[Item]: # pylint: disable=arguments-differ,unused-argument """ Fetch an item associated with a public id. diff --git a/packages/fetchai/protocols/contract_api/README.md b/packages/fetchai/protocols/contract_api/README.md index 19ea53f3d3..532ccff9b0 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: 0.4.0 +version: 0.5.0 description: A protocol for contract APIs requests and responses. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' diff --git a/packages/fetchai/protocols/contract_api/__init__.py b/packages/fetchai/protocols/contract_api/__init__.py index 4674ea494b..b93cfc3722 100644 --- a/packages/fetchai/protocols/contract_api/__init__.py +++ b/packages/fetchai/protocols/contract_api/__init__.py @@ -22,4 +22,5 @@ from packages.fetchai.protocols.contract_api.message import ContractApiMessage from packages.fetchai.protocols.contract_api.serialization import ContractApiSerializer + ContractApiMessage.serializer = ContractApiSerializer diff --git a/packages/fetchai/protocols/contract_api/message.py b/packages/fetchai/protocols/contract_api/message.py index b6108ee30c..80add03ac4 100644 --- a/packages/fetchai/protocols/contract_api/message.py +++ b/packages/fetchai/protocols/contract_api/message.py @@ -35,6 +35,7 @@ ) from packages.fetchai.protocols.contract_api.custom_types import State as CustomState + logger = logging.getLogger("aea.packages.fetchai.protocols.contract_api.message") DEFAULT_BODY_SIZE = 4 diff --git a/packages/fetchai/protocols/contract_api/protocol.yaml b/packages/fetchai/protocols/contract_api/protocol.yaml index 0efae028e4..f7860f5672 100644 --- a/packages/fetchai/protocols/contract_api/protocol.yaml +++ b/packages/fetchai/protocols/contract_api/protocol.yaml @@ -1,19 +1,19 @@ name: contract_api author: fetchai -version: 0.4.0 +version: 0.5.0 type: protocol description: A protocol for contract APIs requests and responses. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: - README.md: QmVR8NKCTfaoLCiepHWqPGPVRuhmbwaM4v9iheK4FzaWwj - __init__.py: QmZodYjNqoMgGAGKfkCU4zU9t1Cx9MAownqSy4wyVdwaHF + README.md: QmPK5NcjfCiw3wnnaM18hdgHUTyU9YfxVgs9wsBZdrfhhF + __init__.py: QmcZFuqoBkEx1fYytpLr7142vtXf9qh8cpeRYVZcaWdmrD contract_api.proto: QmSZpXyFMf2MNgVud8iPinaaerx1CManffgHNMx8FcD8jY contract_api_pb2.py: QmeFTJRKNypwVgAs1h97aMr36xE3hjD8Vhqwo5Pf4dtjTy custom_types.py: QmcMtzozPhcL2H9hDmnUd9bHDE3ihy7HQgvGKkhqxdAXf4 dialogues.py: QmTjXH8JUtziUFDawKsSTYE5dxn1n1FmMPeWexyxiPYd6k - message.py: Qmd7r8Zf3jC1uwMRM1dhs1FTEqDMXreHHRiGgViAQkEMXc - serialization.py: QmUKAwH9Jw66JnbZLwm5HZ4gvV8hmtFg8s2tfPkiKSnLir + message.py: QmV576x24NDmGN9XfCq3o3gKKwubD5awwobCggsTJo6NTo + serialization.py: QmPNTw6vXbdw9GMUwCCGyoHNxopVE1ipcp5DriSn3kGiB8 fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/contract_api/serialization.py b/packages/fetchai/protocols/contract_api/serialization.py index 12ff18ffb6..e653e24335 100644 --- a/packages/fetchai/protocols/contract_api/serialization.py +++ b/packages/fetchai/protocols/contract_api/serialization.py @@ -21,15 +21,17 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from packages.fetchai.protocols.contract_api import contract_api_pb2 -from packages.fetchai.protocols.contract_api.custom_types import Kwargs -from packages.fetchai.protocols.contract_api.custom_types import RawMessage -from packages.fetchai.protocols.contract_api.custom_types import RawTransaction -from packages.fetchai.protocols.contract_api.custom_types import State +from packages.fetchai.protocols.contract_api.custom_types import ( + Kwargs, + RawMessage, + RawTransaction, + State, +) from packages.fetchai.protocols.contract_api.message import ContractApiMessage diff --git a/packages/fetchai/protocols/fipa/__init__.py b/packages/fetchai/protocols/fipa/__init__.py index 51ed765862..84ca80bc01 100644 --- a/packages/fetchai/protocols/fipa/__init__.py +++ b/packages/fetchai/protocols/fipa/__init__.py @@ -22,4 +22,5 @@ from packages.fetchai.protocols.fipa.message import FipaMessage from packages.fetchai.protocols.fipa.serialization import FipaSerializer + FipaMessage.serializer = FipaSerializer diff --git a/packages/fetchai/protocols/fipa/message.py b/packages/fetchai/protocols/fipa/message.py index 02328af938..57f781e3ac 100644 --- a/packages/fetchai/protocols/fipa/message.py +++ b/packages/fetchai/protocols/fipa/message.py @@ -31,6 +31,7 @@ ) from packages.fetchai.protocols.fipa.custom_types import Query as CustomQuery + logger = logging.getLogger("aea.packages.fetchai.protocols.fipa.message") DEFAULT_BODY_SIZE = 4 diff --git a/packages/fetchai/protocols/fipa/protocol.yaml b/packages/fetchai/protocols/fipa/protocol.yaml index 22ffacd9e0..e0b42d3a97 100644 --- a/packages/fetchai/protocols/fipa/protocol.yaml +++ b/packages/fetchai/protocols/fipa/protocol.yaml @@ -7,13 +7,13 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmRwxwzxfhotek7WUbyAeufBvoHpWbDwfUVMy3FKitiHKy - __init__.py: QmZuv8RGegxunYaJ7sHLwj2oLLCFCAGF139b8DxEY68MRT + __init__.py: QmR6pcWX14FsQip4eYJRNeiQdrNMPj6y4m6Tsgd6hd7yU6 custom_types.py: Qmf72KRbkNsxxAHwMtkmJc5TRL23fU7AuzJAdSTftckwJQ dialogues.py: QmWaciW35ZTVeTeLWeyp3hjehKkWB5ZY7Di8N8cDH8Mjwb fipa.proto: Qmb19ojU7i5jUaRbURtnRSWQ6ENGniYuM3WtpRm6UYfpkU fipa_pb2.py: QmTifDW1WQAgJevykfCQME5u3qQG5x74JMoLz1KYMTrfcU - message.py: QmbFtigdnmqqmKZMTxjmk6JQJtcyhVY9a4mpEEcHmFJd24 - serialization.py: QmccPH6KqD3DhZr778GW1iGaFXJgDacCjMPuqostvkqEaG + message.py: QmSnzY8G89gUsgo21wF2TxnjZr7czba9a7HEfLpWg9tqQq + serialization.py: QmaFFxUczHpcoPosV3aKfUAwnr9347Cjnotqby4GMdiM2S fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/fipa/serialization.py b/packages/fetchai/protocols/fipa/serialization.py index 1beccf58c1..01376fdca1 100644 --- a/packages/fetchai/protocols/fipa/serialization.py +++ b/packages/fetchai/protocols/fipa/serialization.py @@ -21,13 +21,12 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from packages.fetchai.protocols.fipa import fipa_pb2 -from packages.fetchai.protocols.fipa.custom_types import Description -from packages.fetchai.protocols.fipa.custom_types import Query +from packages.fetchai.protocols.fipa.custom_types import Description, Query from packages.fetchai.protocols.fipa.message import FipaMessage diff --git a/packages/fetchai/protocols/gym/README.md b/packages/fetchai/protocols/gym/README.md index 53f7d0095a..791f5a109b 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: 0.5.0 +version: 0.6.0 description: A protocol for interacting with a gym connection. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' diff --git a/packages/fetchai/protocols/gym/__init__.py b/packages/fetchai/protocols/gym/__init__.py index ce5eacc728..6e25f7d246 100644 --- a/packages/fetchai/protocols/gym/__init__.py +++ b/packages/fetchai/protocols/gym/__init__.py @@ -22,4 +22,5 @@ from packages.fetchai.protocols.gym.message import GymMessage from packages.fetchai.protocols.gym.serialization import GymSerializer + GymMessage.serializer = GymSerializer diff --git a/packages/fetchai/protocols/gym/message.py b/packages/fetchai/protocols/gym/message.py index 2aaacf6386..8ecd875806 100644 --- a/packages/fetchai/protocols/gym/message.py +++ b/packages/fetchai/protocols/gym/message.py @@ -28,6 +28,7 @@ from packages.fetchai.protocols.gym.custom_types import AnyObject as CustomAnyObject + logger = logging.getLogger("aea.packages.fetchai.protocols.gym.message") DEFAULT_BODY_SIZE = 4 diff --git a/packages/fetchai/protocols/gym/protocol.yaml b/packages/fetchai/protocols/gym/protocol.yaml index 77145f0271..3ccf45d4d0 100644 --- a/packages/fetchai/protocols/gym/protocol.yaml +++ b/packages/fetchai/protocols/gym/protocol.yaml @@ -1,19 +1,19 @@ name: gym author: fetchai -version: 0.5.0 +version: 0.6.0 type: protocol description: A protocol for interacting with a gym connection. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: - README.md: QmTCkz4cEUcwuPZVtvrVr8Np5qn1SMwm6foGSY9Y68DhZT - __init__.py: QmWBvruqGuU2BVCq8cuP1S3mgvuC78yrG4TdtSvKhCT8qX + README.md: QmReTgjgH8mszRS1obqdxXDeA6f8sgkmfXHqZ1FSFeeZgX + __init__.py: QmQvogZ6FVrp15UX2GZ2YKqZASS9gamA72MGt79oieE2tq custom_types.py: QmT3VKT86xZKR11RR1vQ3myRpmVZNdzY6ELd8HG9U2ngwa dialogues.py: QmdCzcFfyPF43U2SoxwshG5p4hd6dK49m6GYKduDHbnNPo gym.proto: QmbrGMjAwLXxg4vZTTsdNkbsudhJbSbvkG2mag9RP6ejEg gym_pb2.py: QmQmbRXAdHQGF4oWk27deqHhMYqmUWviLrAkvnGAVAXpeE - message.py: Qmc4wx56DVaSpLe6h7KSUBmxEWoHVFFAQQB4mpympggcTG - serialization.py: QmSxsJYMNbowsrCeY5s14FbT8J1XJf2LkPDaGv7ZP5ea4e + message.py: QmcAD3wuFow6fvwdHiEyzEX4y7b19GxBAgSsSgYfAS1Myg + serialization.py: QmT2d4sLcJ96Yf2GEBoKqL3oq4pE518yQvK5WbeHaDXMSQ fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/gym/serialization.py b/packages/fetchai/protocols/gym/serialization.py index 5322b19546..d005731d68 100644 --- a/packages/fetchai/protocols/gym/serialization.py +++ b/packages/fetchai/protocols/gym/serialization.py @@ -21,9 +21,9 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from packages.fetchai.protocols.gym import gym_pb2 from packages.fetchai.protocols.gym.custom_types import AnyObject diff --git a/packages/fetchai/protocols/http/__init__.py b/packages/fetchai/protocols/http/__init__.py index 8159b9d27c..9ec736425a 100644 --- a/packages/fetchai/protocols/http/__init__.py +++ b/packages/fetchai/protocols/http/__init__.py @@ -22,4 +22,5 @@ from packages.fetchai.protocols.http.message import HttpMessage from packages.fetchai.protocols.http.serialization import HttpSerializer + HttpMessage.serializer = HttpSerializer diff --git a/packages/fetchai/protocols/http/message.py b/packages/fetchai/protocols/http/message.py index 3c4841038a..e1facfecc5 100644 --- a/packages/fetchai/protocols/http/message.py +++ b/packages/fetchai/protocols/http/message.py @@ -26,6 +26,7 @@ from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message + logger = logging.getLogger("aea.packages.fetchai.protocols.http.message") DEFAULT_BODY_SIZE = 4 diff --git a/packages/fetchai/protocols/http/protocol.yaml b/packages/fetchai/protocols/http/protocol.yaml index 7f67fbe894..15c9d118b8 100644 --- a/packages/fetchai/protocols/http/protocol.yaml +++ b/packages/fetchai/protocols/http/protocol.yaml @@ -7,12 +7,12 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmY7fxhyNBgwU7uc6LKtCN4aSQ4bym5BwqtwRAfwPokULN - __init__.py: QmRWie4QPiFJE8nK4fFJ6prqoG3u36cPo7st5JUZAGpVWv + __init__.py: QmWzgWYrnS7PhjYrrx2mykLoaCbb7rDnVRcDqifsRukTy4 dialogues.py: QmdwTehjCppcxyDid8m6zuHY5YwprUhato88R9Zdm9aXaM http.proto: QmXafGzyZC37aNn6RwSfBVXDU3dzvGfYtQRA43mgXPeUoq http_pb2.py: QmeXYdCjWbwisjZ2MUswgHqgKmaauJyD1r96F1s1vWAUCT - message.py: QmYSmd2xLU8TsLLorxxNnaHj1cVLztgrKtQnaqJ1USFkPY - serialization.py: QmWHtnfKcgDyE3CBuP4LRVRToj8MBS4EoaoETDcV1Jdoe5 + message.py: QmcZaEZbRbcx5U5KVEi2QTr6BVyHGDXcRrSqKhpngXRZ15 + serialization.py: QmPEcehyD89SSmfrYVUTWRmAy9V8859FkcnJb3GuwNPdw3 fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/http/serialization.py b/packages/fetchai/protocols/http/serialization.py index 0bfb33d5a8..079dd23b04 100644 --- a/packages/fetchai/protocols/http/serialization.py +++ b/packages/fetchai/protocols/http/serialization.py @@ -21,9 +21,9 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from packages.fetchai.protocols.http import http_pb2 from packages.fetchai.protocols.http.message import HttpMessage diff --git a/packages/fetchai/protocols/ledger_api/__init__.py b/packages/fetchai/protocols/ledger_api/__init__.py index 03712dc20d..99f0907397 100644 --- a/packages/fetchai/protocols/ledger_api/__init__.py +++ b/packages/fetchai/protocols/ledger_api/__init__.py @@ -22,4 +22,5 @@ from packages.fetchai.protocols.ledger_api.message import LedgerApiMessage from packages.fetchai.protocols.ledger_api.serialization import LedgerApiSerializer + LedgerApiMessage.serializer = LedgerApiSerializer diff --git a/packages/fetchai/protocols/ledger_api/message.py b/packages/fetchai/protocols/ledger_api/message.py index 6b60d32682..ef64a3fcf8 100644 --- a/packages/fetchai/protocols/ledger_api/message.py +++ b/packages/fetchai/protocols/ledger_api/message.py @@ -40,6 +40,7 @@ TransactionReceipt as CustomTransactionReceipt, ) + logger = logging.getLogger("aea.packages.fetchai.protocols.ledger_api.message") DEFAULT_BODY_SIZE = 4 diff --git a/packages/fetchai/protocols/ledger_api/protocol.yaml b/packages/fetchai/protocols/ledger_api/protocol.yaml index 1685412d7c..8c2f6203f7 100644 --- a/packages/fetchai/protocols/ledger_api/protocol.yaml +++ b/packages/fetchai/protocols/ledger_api/protocol.yaml @@ -7,13 +7,13 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmSoo6ds8mKhtoG8CBbu9rb9yj7sqeeuBfcU7CLj584uRX - __init__.py: Qmct8jVx6ndWwaa5HXJAJgMraVuZ8kMeyx6rnEeHAYHwDJ + __init__.py: QmX6ta6j6ust7qhVk1kZygzZK3gTTg7hSCBbSMKUxJgWgG custom_types.py: QmWRrvFStMhVJy8P2WD6qjDgk14ZnxErN7XymxUtof7HQo dialogues.py: QmRtWkAfR9WTvygMJ36R758RzdY2mGQs2fgtHCfjxmeaHy ledger_api.proto: QmR7b3Mj4Jt4Y5ChZ7x42nxLtQrs2VBRvb2dqV3EaPW6B8 ledger_api_pb2.py: QmUMeo2X58acnBaVQuDpMhteNuzagbT79vf5mdtMJLk9VF - message.py: QmcLuy4YcL22qs3jHf5KHZ7vZueiTDrEmbWjfRTbyzwc5m - serialization.py: QmSarPknCq2LiKZx3PHgE9eXhrygPSyiu15WCS46W9BD3E + message.py: QmNnb5uwsWZjQizDnuTwCAw1sGmmiARLeesTVDE4nLJi7j + serialization.py: QmY894fJMbMERxid8wb6Jxoq3cdfPsFMuAiYNQWJpW6NY2 fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/ledger_api/serialization.py b/packages/fetchai/protocols/ledger_api/serialization.py index 88c13acd87..ec013ebdeb 100644 --- a/packages/fetchai/protocols/ledger_api/serialization.py +++ b/packages/fetchai/protocols/ledger_api/serialization.py @@ -21,16 +21,18 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from packages.fetchai.protocols.ledger_api import ledger_api_pb2 -from packages.fetchai.protocols.ledger_api.custom_types import RawTransaction -from packages.fetchai.protocols.ledger_api.custom_types import SignedTransaction -from packages.fetchai.protocols.ledger_api.custom_types import Terms -from packages.fetchai.protocols.ledger_api.custom_types import TransactionDigest -from packages.fetchai.protocols.ledger_api.custom_types import TransactionReceipt +from packages.fetchai.protocols.ledger_api.custom_types import ( + RawTransaction, + SignedTransaction, + Terms, + TransactionDigest, + TransactionReceipt, +) from packages.fetchai.protocols.ledger_api.message import LedgerApiMessage diff --git a/packages/fetchai/protocols/ml_trade/__init__.py b/packages/fetchai/protocols/ml_trade/__init__.py index 84bc74eaac..bb602e2a47 100644 --- a/packages/fetchai/protocols/ml_trade/__init__.py +++ b/packages/fetchai/protocols/ml_trade/__init__.py @@ -22,4 +22,5 @@ from packages.fetchai.protocols.ml_trade.message import MlTradeMessage from packages.fetchai.protocols.ml_trade.serialization import MlTradeSerializer + MlTradeMessage.serializer = MlTradeSerializer diff --git a/packages/fetchai/protocols/ml_trade/message.py b/packages/fetchai/protocols/ml_trade/message.py index f99abeaa98..7cf62d08ed 100644 --- a/packages/fetchai/protocols/ml_trade/message.py +++ b/packages/fetchai/protocols/ml_trade/message.py @@ -31,6 +31,7 @@ ) from packages.fetchai.protocols.ml_trade.custom_types import Query as CustomQuery + logger = logging.getLogger("aea.packages.fetchai.protocols.ml_trade.message") DEFAULT_BODY_SIZE = 4 diff --git a/packages/fetchai/protocols/ml_trade/protocol.yaml b/packages/fetchai/protocols/ml_trade/protocol.yaml index 91dbcdf221..3c51f9b988 100644 --- a/packages/fetchai/protocols/ml_trade/protocol.yaml +++ b/packages/fetchai/protocols/ml_trade/protocol.yaml @@ -7,13 +7,13 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmSRtzACMh3x3LSjYqWXWTpYpE4C7G8EHbW4zQQoMFFZ4K - __init__.py: QmXZMVdsBXUJxLZvwwhWBx58xfxMSyoGxdYp5Aeqmzqhzt + __init__.py: QmcCS9uUQTTS2w85dTNiN5rQ14wyBhmBkr7pPPPcbLphcn custom_types.py: QmPa6mxbN8WShsniQxJACfzAPRjGzYLbUFGoVU4N9DewUw dialogues.py: QmVvP34aKWEtHrKmccNMvEdDnx5B7xpE5aEGzr6GU2u8UK - message.py: QmZdRAScKbmJgKVbRJvDyMUNfRZKWCwWFYjGNDDBAq5fUT + message.py: QmZ8HzNw27TdxoZBHRf1YJheACo7kU6n1497DYgxjbCwZu ml_trade.proto: QmXqDTBhno2kMLdAbNiZWcAHpjiJ95qXL4doUnhdmCNkhk ml_trade_pb2.py: QmU1MrfXLsJMo91yenRNTdnGFUA9UDcxJsayHYqHN2uwjp - serialization.py: QmTfLdYfJnA8VTxtat5vgsfms7dJJF4zwuxYGxh9pDRALr + serialization.py: QmNnEyqVdHuXXQLjAvbyibmdRbWBZG8tNEQy32s7SAVtcE fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/ml_trade/serialization.py b/packages/fetchai/protocols/ml_trade/serialization.py index b67dfb5667..3b3c34ffd6 100644 --- a/packages/fetchai/protocols/ml_trade/serialization.py +++ b/packages/fetchai/protocols/ml_trade/serialization.py @@ -21,13 +21,12 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from packages.fetchai.protocols.ml_trade import ml_trade_pb2 -from packages.fetchai.protocols.ml_trade.custom_types import Description -from packages.fetchai.protocols.ml_trade.custom_types import Query +from packages.fetchai.protocols.ml_trade.custom_types import Description, Query from packages.fetchai.protocols.ml_trade.message import MlTradeMessage diff --git a/packages/fetchai/protocols/oef_search/__init__.py b/packages/fetchai/protocols/oef_search/__init__.py index b8296a656d..f130fc2c1b 100644 --- a/packages/fetchai/protocols/oef_search/__init__.py +++ b/packages/fetchai/protocols/oef_search/__init__.py @@ -22,4 +22,5 @@ from packages.fetchai.protocols.oef_search.message import OefSearchMessage from packages.fetchai.protocols.oef_search.serialization import OefSearchSerializer + OefSearchMessage.serializer = OefSearchSerializer diff --git a/packages/fetchai/protocols/oef_search/message.py b/packages/fetchai/protocols/oef_search/message.py index 51190e1eee..824e80d505 100644 --- a/packages/fetchai/protocols/oef_search/message.py +++ b/packages/fetchai/protocols/oef_search/message.py @@ -37,6 +37,7 @@ ) from packages.fetchai.protocols.oef_search.custom_types import Query as CustomQuery + logger = logging.getLogger("aea.packages.fetchai.protocols.oef_search.message") DEFAULT_BODY_SIZE = 4 diff --git a/packages/fetchai/protocols/oef_search/protocol.yaml b/packages/fetchai/protocols/oef_search/protocol.yaml index 79f0409feb..39e476611e 100644 --- a/packages/fetchai/protocols/oef_search/protocol.yaml +++ b/packages/fetchai/protocols/oef_search/protocol.yaml @@ -7,13 +7,13 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmaGSTqxvQFKccBnLovhBbfSH3C3Sorrj7kFyZqW9qptLa - __init__.py: QmRvTtynKcd7shmzgf8aZdcA5witjNL5cL2a7WPgscp7wq + __init__.py: Qmdr5ks5X4YtnpH6yKUcNu9uouyv3EGmrKFhyvNH7ZBjvT custom_types.py: QmYAkKYj9gGHaij7uTejoJe9KRhNcsU4sJC1utMfhUYhg3 dialogues.py: QmQPLnW3jAs6tLLmhkX4C7texGRHM9bfdjs83dUH5TkJ4v - message.py: QmU8jH94qxrcr9eUtXWn5PzqmHT7NBc62gs53HPXKVk1Ts + message.py: QmWFvjX7spNHQx6QQevBRXmFyJBuenyAPYAjxVLYvKdC7B oef_search.proto: QmTUS3PAEi5kD6PxC2XQAtE2jbiA6WP3HjwtUxs5PRWTA9 oef_search_pb2.py: QmRmtzfGBbkJSneEF8qkUn4UjenbzBzzgwoGeSANCGktBz - serialization.py: QmRjYYnHb9xUcCRBVdLeMGZKDUhQvN6qSxS4E81gBCr1Sc + serialization.py: QmcMQLbz6fkvZeqUXyE9WwH4TEJ3Dzy6pV4txLAVw9sdwb fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/oef_search/serialization.py b/packages/fetchai/protocols/oef_search/serialization.py index cd7e3e7522..3d0348c1f7 100644 --- a/packages/fetchai/protocols/oef_search/serialization.py +++ b/packages/fetchai/protocols/oef_search/serialization.py @@ -21,15 +21,17 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from packages.fetchai.protocols.oef_search import oef_search_pb2 -from packages.fetchai.protocols.oef_search.custom_types import AgentsInfo -from packages.fetchai.protocols.oef_search.custom_types import Description -from packages.fetchai.protocols.oef_search.custom_types import OefErrorOperation -from packages.fetchai.protocols.oef_search.custom_types import Query +from packages.fetchai.protocols.oef_search.custom_types import ( + AgentsInfo, + Description, + OefErrorOperation, + Query, +) from packages.fetchai.protocols.oef_search.message import OefSearchMessage diff --git a/packages/fetchai/protocols/tac/__init__.py b/packages/fetchai/protocols/tac/__init__.py index 0563c30ca3..0dd910252c 100644 --- a/packages/fetchai/protocols/tac/__init__.py +++ b/packages/fetchai/protocols/tac/__init__.py @@ -22,4 +22,5 @@ from packages.fetchai.protocols.tac.message import TacMessage from packages.fetchai.protocols.tac.serialization import TacSerializer + TacMessage.serializer = TacSerializer diff --git a/packages/fetchai/protocols/tac/message.py b/packages/fetchai/protocols/tac/message.py index 999a42bbf9..29a6c32f5c 100644 --- a/packages/fetchai/protocols/tac/message.py +++ b/packages/fetchai/protocols/tac/message.py @@ -28,6 +28,7 @@ from packages.fetchai.protocols.tac.custom_types import ErrorCode as CustomErrorCode + logger = logging.getLogger("aea.packages.fetchai.protocols.tac.message") DEFAULT_BODY_SIZE = 4 diff --git a/packages/fetchai/protocols/tac/protocol.yaml b/packages/fetchai/protocols/tac/protocol.yaml index 257b0eba06..cd0c86b600 100644 --- a/packages/fetchai/protocols/tac/protocol.yaml +++ b/packages/fetchai/protocols/tac/protocol.yaml @@ -8,11 +8,11 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmVhm6VBbggxjTe3PEhCBfTomWekNa5buYy3sY7YYN6Er6 - __init__.py: QmZYdAjm3o44drRiY3MT4RtG2fFLxtaL8h898DmjoJwJzV + __init__.py: QmSAC7PGra9fig8RhhF1j3XEVpgie9UZNNYPc2AB9Kx9xJ custom_types.py: QmXQATfnvuCpt4FicF4QcqCcLj9PQNsSHjCBvVQknWpyaN dialogues.py: QmTxHrcGujP1RUYvfJygZyQoUwmDg2GBWfmbR3tWUSbyop - message.py: QmfNdmYk3wssDJvHwMsMxXaiWCjm3fSH9Su4KmsYDZJoWg - serialization.py: QmZYhkHa6wW5T4fSUSHar67C76ascfKLsevWEfkff3uVvU + message.py: QmfNRtqEpLyAf4knnTecsiNxzehqwWjk8agfg9oe2XvCt3 + serialization.py: Qmani4DjtVVNYF1DDUSWAnQu7pC2v1DPvEW6ZQwmp2nMSA tac.proto: QmUXk2kwqp1vo22oZdvLbWKirojeqkXdGSmiz6r14bMqSE tac_pb2.py: QmQYbDoEWt4cthXQTLYozRTAb5CFWEDMFptfvryze2Reqa fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/tac/serialization.py b/packages/fetchai/protocols/tac/serialization.py index ff88894e90..559b5a6626 100644 --- a/packages/fetchai/protocols/tac/serialization.py +++ b/packages/fetchai/protocols/tac/serialization.py @@ -21,9 +21,9 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage -from aea.protocols.base import Message -from aea.protocols.base import Serializer +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage +from aea.protocols.base import Message, Serializer from packages.fetchai.protocols.tac import tac_pb2 from packages.fetchai.protocols.tac.custom_types import ErrorCode diff --git a/packages/hashes.csv b/packages/hashes.csv index baf0ada175..d374e6e26d 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -34,18 +34,18 @@ fetchai/connections/tcp,QmQZBeN6EqH61GMLwuHqAw3LzdyKi7uj7zJtJ5ekYDpY4n fetchai/connections/webhook,QmXLbSSUSbsgqk3Zwo7sfBob5nKL6MLA4MCTQ3BXA2Bex3 fetchai/contracts/erc1155,QmWu22zW9AVMBVySwF413JMiT5dcWsLsU2gk1KvFYWAwPq fetchai/contracts/scaffold,QmTKkXifQKq5sTVdVKeD9UGnDwdJoEAoJDjY6qUPt9Bsv2 -fetchai/protocols/contract_api,QmcsrhjA8vkDP3LdatdMVQFMUKo4pkcBGifcxjba6H4RmE -fetchai/protocols/default,QmQo4W57uVxayeTFRuQwKTimvrZ7qdTy4zaLeYgwEQWPfR -fetchai/protocols/fipa,QmXpaxEero9KsakbhFwGSWNKvTXLYCdhTK71bBHHjoHV1N -fetchai/protocols/gym,QmSmLKWgKNdbLa7GgJoiJYDfuY5FoMzbH25MwS7tyNhCJb -fetchai/protocols/http,QmNiqrbyWjbZ55q5dJJzC6mVAwzjQb7GtPjEBfDaot7xzP -fetchai/protocols/ledger_api,QmWddBtnoaQ636XoABZ3wu7bdzvRyGkgoFzebPsjVhcL5P -fetchai/protocols/ml_trade,QmZny7NUmTp2xWmchdM2pSMU1goVRcnJ3JqMsvRn1sRpMD -fetchai/protocols/oef_search,QmdesYmMQjQeq41Ndj8HhqqXkaDQVxWbgx1AJ2XsAyfD5z +fetchai/protocols/contract_api,QmXHphJEQ96oMa9YLbJbruQ1X5KuueuSHuKoacpLswHMQC +fetchai/protocols/default,QmZyeUajD4vsRkoVsFLBxFjPBHh1wrV4ehXg6R5X7n9ZRo +fetchai/protocols/fipa,QmYbtjYwn82hPSVaLjEWnubeLbjp6LPoFSGSg7rXJJK8WE +fetchai/protocols/gym,QmaUnM3hUMWRZzQWVv5XCWVHo7LRemF16sX8SNyf1vkv5k +fetchai/protocols/http,QmV9XtG3X66KtUPTVBgwFMh7n4VQZXoSgoSVFU1TNhaJNy +fetchai/protocols/ledger_api,QmZLntgokdUeLrjdwRBSBsPUq58Re3mNyfaCLWZrHcT4z2 +fetchai/protocols/ml_trade,QmTMN6SNwAthWdbaeTiEsmAYpb62nCGh3ZjKbyHciWE2fS +fetchai/protocols/oef_search,QmVui31CtWdsaCKLqiANpVGkq1KnbEEFGRE9QoKPuXkTrk fetchai/protocols/scaffold,QmaQJxMae5XaHKDc838pcGEKhhYSUyKHGWiMfU6zEcVHsy -fetchai/protocols/signing,Qma6Gt1q62Q1WyfhDydKinTtSiXPdtzWnwoGxDtQRXosw1 -fetchai/protocols/state_update,QmVwGWzWC4APKBnLMyYo3dApBqUtyNnnsLvqnyRY9nT5Tn -fetchai/protocols/tac,QmexcWQaNiFp9fhJ8XtwXnNvzV2DbjryVdoE4tByggbEXs +fetchai/protocols/signing,QmczT3GE8A2hFzzK5fRz6hdgx626TgVZaz9VbLkLzDxwsB +fetchai/protocols/state_update,QmfMJ3eCTnGTKVTFBMsnx9BZBnKAAFiTbbjQ4MH6RhkZWU +fetchai/protocols/tac,QmaK8H98X6Np3AJbW6bQ92V4BTxkR3uZmoZPqUroDmZknu fetchai/skills/aries_alice,QmXFSjt8FSHMnw4yjsmw4SVxKRj9N1i5aPcnmPpyoh3Bu1 fetchai/skills/aries_faber,QmX3k9N3VmUE8bYaZ4KCq1Ny3ANTVw7sN8nuCRLDZcTTZK fetchai/skills/carpark_client,QmdfgS34Q7mo7yZ4uThZePudEoPgsmybC66YdVZAXYEybv diff --git a/scripts/generate_all_protocols.py b/scripts/generate_all_protocols.py index 077b9de953..2768e6d92a 100755 --- a/scripts/generate_all_protocols.py +++ b/scripts/generate_all_protocols.py @@ -47,6 +47,7 @@ from aea.configurations.base import ComponentType, ProtocolSpecification from aea.configurations.loader import ConfigLoader, load_component_configuration + SPECIFICATION_REGEX = re.compile(r"(---\nname.*\.\.\.)", re.DOTALL) CUSTOM_TYPE_MODULE_NAME = "custom_types.py" README_FILENAME = "README.md" diff --git a/tests/data/generator/t_protocol/protocol.yaml b/tests/data/generator/t_protocol/protocol.yaml index 12cc33ce2a..8f77f13244 100644 --- a/tests/data/generator/t_protocol/protocol.yaml +++ b/tests/data/generator/t_protocol/protocol.yaml @@ -10,7 +10,7 @@ fingerprint: custom_types.py: QmWg8HFav8w9tfZfMrTG5Uo7QpexvYKKkhpGPD18233pLw dialogues.py: QmdpXJCUP6wV6StDxByraFGveMcTSjjFhDju74S4QVQpxf message.py: QmcRwpGWsUccFQwyEbzTw3JByxr97RVAhCPHwCEGeM94kb - serialization.py: QmUGoxXWXyiMZ7WDBUribmLev7A5g7i7xG2ikJg5mtNyHF + serialization.py: QmYJLfQ49vsqRSpC7GV1ukc3PnkVBuRMM3GBtGoCgDEv5z t_protocol.proto: QmWdNaAJ9Mkf2SHF1RSZrsk2a5jZyXZtCD7XU5PHLCph5z t_protocol_pb2.py: QmRr3b2hjbN2UshSQTr1wWSCpqeNgMfDfnVyBk8BQGdFn4 fingerprint_ignore_patterns: [] diff --git a/tests/data/generator/t_protocol/serialization.py b/tests/data/generator/t_protocol/serialization.py index f84c8ec02e..2c6b422f86 100644 --- a/tests/data/generator/t_protocol/serialization.py +++ b/tests/data/generator/t_protocol/serialization.py @@ -21,7 +21,8 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage +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 diff --git a/tests/data/generator/t_protocol_no_ct/protocol.yaml b/tests/data/generator/t_protocol_no_ct/protocol.yaml index e921cc624e..88d7ea8e95 100644 --- a/tests/data/generator/t_protocol_no_ct/protocol.yaml +++ b/tests/data/generator/t_protocol_no_ct/protocol.yaml @@ -9,7 +9,7 @@ fingerprint: __init__.py: QmaaZ7Je2PRTkcnqy8oLR58yBDVpcRQ4BcaRe3sd3fug3Z dialogues.py: QmPHhh9wkKDG7Fiy9E2WkkggYULFhLrySihJpoBw3mRn2o message.py: QmQDe3TJemYZak71buGCNmEvphuf1J35QgWdvY388DWeLF - serialization.py: QmZHJLYhn7NCBmxc38KurTZWkF2Bae64iiHoLNpazE3qkd + serialization.py: QmPX4KzaEfK9JwbbHAmmB1rZp1guJTW5PgPan7ZGAp36DH t_protocol_no_ct.proto: Qmc8KkKnWZ9utBxrbEyWhVDRdut87DkFvmHP3SYUg4J3EU t_protocol_no_ct_pb2.py: QmPDVxuXLGrVes8nv66g2JFT3rqUN9AjzrMeCFyDK4rjyw 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 ce9436a14a..3e2752017a 100644 --- a/tests/data/generator/t_protocol_no_ct/serialization.py +++ b/tests/data/generator/t_protocol_no_ct/serialization.py @@ -21,7 +21,8 @@ from typing import Any, Dict, cast -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage +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 diff --git a/tests/data/hashes.csv b/tests/data/hashes.csv index 0ca0689a13..7087bce7ed 100644 --- a/tests/data/hashes.csv +++ b/tests/data/hashes.csv @@ -2,7 +2,7 @@ dummy_author/agents/dummy_aea,QmeFNeXh5vk81YwPnPY9qmBA5wrHeH8VsHkDcv6TqHvmFn dummy_author/skills/dummy_skill,QmQpimGAQ56nihemchgE29Mfan57YdGixj3kat69FGkrjK fetchai/connections/dummy_connection,QmT7zw62fDK1mmwYqTvw4pWqFg8Fc1DYQHUxcxd7sqZiLu fetchai/contracts/dummy_contract,QmPMs9VDGZGF8xJ8XBYLVb1xK5XAgiaJr5Gwcq7Vr3TUyu -fetchai/protocols/t_protocol,QmPod6RijuWQYXiki9AAMwJ4CdN1sSSM5a9wYut9ypCbYT -fetchai/protocols/t_protocol_no_ct,QmZ12agcGj6tLoLMTNSpXGnKMQCMGDQQg7JJkPory1YhFA +fetchai/protocols/t_protocol,QmSrs4QTd1DXTcbYqmTVRn1QveHM9bRuard7fSaQuQ3UZ5 +fetchai/protocols/t_protocol_no_ct,QmRiMmpNhm8Bf79ikGW5skRponJEWRNdVBtw4ZTrDy1gHA fetchai/skills/dependencies_skill,QmaLBgnwTXdTzue7H3UbVuKmPxaqoK4Azpj85tKTdQi29j fetchai/skills/exception_skill,QmT2RiM95EVbXTD31zU6pKKoERkrCLuyxpAJfkm3dTsTp2 diff --git a/tests/test_packages/test_connections/test_oef/test_communication.py b/tests/test_packages/test_connections/test_oef/test_communication.py index 011b13ad61..4b8a95a8eb 100644 --- a/tests/test_packages/test_connections/test_oef/test_communication.py +++ b/tests/test_packages/test_connections/test_oef/test_communication.py @@ -45,7 +45,8 @@ Query, ) from aea.mail.base import Envelope -from aea.mail.base_pb2 import DialogueMessage, Message as ProtobufMessage +from aea.mail.base_pb2 import DialogueMessage +from aea.mail.base_pb2 import Message as ProtobufMessage from aea.multiplexer import Multiplexer from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage From e7f71a04c6239844ee117f9a31184ed4b33b8467 Mon Sep 17 00:00:00 2001 From: Lokman Rahmani Date: Wed, 23 Sep 2020 16:20:26 +0100 Subject: [PATCH 029/155] [wip] reinstialize deployment templates - Problem with 2nd public dht nodes --- scripts/acn/k8s/deployment.yaml | 11 +- scripts/acn/k8s/dns.yaml | 8 +- scripts/acn/k8s/istio.yaml | 16 +-- scripts/acn/k8s/secret.yaml | 4 +- scripts/acn/k8s_deploy_acn_node.py | 136 +++++++++++++++++- .../test_p2p_libp2p/test_public_dht.py | 12 +- 6 files changed, 163 insertions(+), 24 deletions(-) diff --git a/scripts/acn/k8s/deployment.yaml b/scripts/acn/k8s/deployment.yaml index 26065b3c5d..693173ca9d 100644 --- a/scripts/acn/k8s/deployment.yaml +++ b/scripts/acn/k8s/deployment.yaml @@ -2,7 +2,7 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: name: ph-deployment-name-here - namespace: ph-cluster-namespace-here + namespace: agents-p2p-dht labels: app: ph-deployment-name-here spec: @@ -29,7 +29,7 @@ spec: containers: - image: ph-gcr-image-with-tag-here - name: ph-container-name-here + name: agents-p2p-dht ports: - containerPort: ph-node-port-number-here - containerPort: ph-node-delegate-port-number-here @@ -56,6 +56,11 @@ spec: value: ph-node-delegate-uri-here - name: AEA_P2P_ENTRY_URIS value: ph-node-entry-peers-list-here + - name: NODE_PRIV_KEY + valueFrom: + secretKeyRef: + name: ph-node-priv-key-name-here + key: priv-key restartPolicy: Always --- @@ -63,7 +68,7 @@ apiVersion: v1 kind: Service metadata: name: ph-deployment-name-here - namespace: ph-cluster-namespace-here + namespace: agents-p2p-dht spec: selector: app: ph-deployment-name-here diff --git a/scripts/acn/k8s/dns.yaml b/scripts/acn/k8s/dns.yaml index c8cd85ac6e..ca6239fbe1 100644 --- a/scripts/acn/k8s/dns.yaml +++ b/scripts/acn/k8s/dns.yaml @@ -2,12 +2,12 @@ apiVersion: externaldns.k8s.io/v1alpha1 kind: DNSEndpoint metadata: - name: ph-deployment-name-here - namespace: ph-cluster-namespace-here + name: deployment-name-here + namespace: agents-p2p-dht spec: endpoints: - - dnsName: ph-dnsname-here + - dnsName: agents-p2p-dht.sandbox.fetch-ai.com recordTTL: 180 recordType: CNAME targets: - - ph-dnsname-here + - fetchpub.sandbox.fetch-ai.com diff --git a/scripts/acn/k8s/istio.yaml b/scripts/acn/k8s/istio.yaml index 856efede51..344fd79ac0 100644 --- a/scripts/acn/k8s/istio.yaml +++ b/scripts/acn/k8s/istio.yaml @@ -3,7 +3,7 @@ apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: ph-deployment-name-here - namespace: ph-cluster-namspace-here + namespace: agents-p2p-dht spec: selector: app: istio-fetchpubig @@ -11,13 +11,13 @@ spec: servers: - port: name: libp2p - number: node-port-number-here + number: ph-node-port-number-here protocol: TCP hosts: - agents-p2p-dht.sandbox.fetch-ai.com - port: name: tcp - number: node-delegate-port-number-here + number: ph-node-delegate-port-number-here protocol: TCP hosts: - agents-p2p-dht.sandbox.fetch-ai.com @@ -26,7 +26,7 @@ apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: ph-deployment-name-here - namespace: ph-cluster-namespace-here + namespace: agents-p2p-dht spec: gateways: - ph-deployment-name-here @@ -34,16 +34,16 @@ spec: - agents-p2p-dht.sandbox.fetch-ai.com tcp: - match: - - port: node-port-number-here + - port: ph-node-port-number-here route: - destination: host: ph-deployment-name-here port: - number: node-port-number-here + number: ph-node-port-number-here - match: - - port: node-delegate-port-number-here + - port: ph-node-delegate-port-number-here route: - destination: host: ph-deployment-name-here port: - number: node-delegate-port-number-here + number: ph-node-delegate-port-number-here diff --git a/scripts/acn/k8s/secret.yaml b/scripts/acn/k8s/secret.yaml index f9ee890243..edc357c481 100644 --- a/scripts/acn/k8s/secret.yaml +++ b/scripts/acn/k8s/secret.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: Secret metadata: - name: node-priv-key-name-here + name: ph-node-priv-key-name-here type: Opaque data: - priv-key: based64-encode-private-key-here + priv-key: ph-based64-encoded-private-key-here diff --git a/scripts/acn/k8s_deploy_acn_node.py b/scripts/acn/k8s_deploy_acn_node.py index 60e83a8c2d..1a3772bf1e 100644 --- a/scripts/acn/k8s_deploy_acn_node.py +++ b/scripts/acn/k8s_deploy_acn_node.py @@ -18,7 +18,10 @@ # ------------------------------------------------------------------------------ """ Deploy an ACN libp2p node to a kubernetes cluster """ -from typing import Dict +import argparse +from pathlib import Path +from tempfile import mkdtemp +from typing import Dict, List, Optional k8s_deployment_name = "ph-deployment-name-here" k8s_cluster_namespace = "ph-cluster-namespace-here" @@ -26,9 +29,136 @@ k8s_check_listening_port = "ph-latest-entry-peer-port-here" k8s_docker_image_url = "ph-gcr-image-with-tag-here" k8s_docker_container_name = "ph-container-name-here" +k8s_dnsname = "ph-dnsname-here" +k8s_dnsname_target = "ph-dnsname-target-here" node_port_number = "ph-node-port-number-here" node_port_number_delegate = "ph-node-delegate-port-number-here" -config : Dict[str, str] = { +node_private_key = "ph-node-priv-key-name-here" +node_uri_external = "ph-node-external-uri-here" +node_uri = "ph-node-local-uri-here" +node_uri_delegate = "ph-node-delegate-uri-here" +node_entry_peers = "ph-node-entry-peers-list-here" +node_key_name = "ph-node-priv-key-name-here" +node_key_encoded = "ph-base64-encoded-private-key-here" -} + +config: Dict[str, str] = {} + +k8s_deployment_templates = [ + "k8s/deployment.yaml", + "k8s/dns.yaml", + "k8s/secrect.yaml", + "k8s/istion.yaml", +] + + +class AcnK8sConfig: + """ + """ + + def __init__( + self, + root_dir: str, + key_file: str, + port: int, + delegate_port: int, + entry_peers: Optional[List[str]], + enable_checks: bool = True, + ): + """ + """ + self.workdir = "" + self.root_dir = root_dir + self.port = port + self.port_delegate = delegate_port + self.entry_peers = entry_peers if entry_peers is not None else [] + + self.key = "" + with open(key_file, "r") as f: + self.key = f.read().strip() + + self.deployment_files = [] + self.template_files = [] # type: List[Path] + self._fetch_deployment_templates() + + if enable_checks: + self._check_config() + + def _fetch_deployment_templates(self): + for template in k8s_deployment_templates: + path = Path(self.root_dir, template) + if not path.is_file(): + raise ValueError("Couldn't find deployment template file: {}".format(path)) + self.template_files.append(path) + + def generate_deployment(self): + """ """ + + self.workdir = mkdtemp() + + for path in self.template_files: + with open(path, "r") as f: + content = f.read() + + content = self._substitute_placeholders(content) + + with open(self.workdir / path.name, "w") as f: + f.write(content) + + + + def _check_config(self): + + + +def parse_commandline(): + """ Parse script cl arguments """ + + # args: + # - scripts absolute path + # - private key file + # - port number / uri + # |__-> deployment name + # - delegate port number + # - entry peers list + + parser = argparse.ArgumentParser() + parser.add_argument( + "--key-file", + action="store", + type=str, + dest="key", + help="node's private key file", + ) + parser.add_argument( + "--port", + action="store", + type=str, + dest="port", + help="node's port number (both local and external)", + ) + parser.add_argument( + "--port-delegate", + action="store", + type=str, + dest="delegate_port", + required=False, + help="node's delegate service port number (both local and external)", + ) + parser.add_argument( + "--entry-peers-maddrs", + action="store", + nargs="*", + dest="entry_peers_maddrs", + help="node's entry peers in libp2p multiaddress format", + ) + + args = parser.parse_args() + + return args + + +if __name__ == "__main__": + + args = parse_commandline() 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 9b5fa01079..f2fdd4485a 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 @@ -42,8 +42,12 @@ ) DEFAULT_PORT = 10234 -PUBLIC_DHT_MADDRS = [PUBLIC_DHT_P2P_MADDR_1, PUBLIC_DHT_P2P_MADDR_2] -PUBLIC_DHT_DELEGATE_URIS = [PUBLIC_DHT_DELEGATE_URI_1, PUBLIC_DHT_DELEGATE_URI_2] +#PUBLIC_DHT_MADDRS = [PUBLIC_DHT_P2P_MADDR_1, PUBLIC_DHT_P2P_MADDR_2] +PUBLIC_DHT_MADDRS = ["/dns4/agents-p2p-dht.sandbox.fetch-ai.com/tcp/9008/p2p/16Uiu2HAkxwwYLu5L1r9XXfdkKKmBT2NjF6HgndCQ2mB2PYefS2Q4", "/dns4/agents-p2p-dht.sandbox.fetch-ai.com/tcp/9009/p2p/16Uiu2HAmSFKTyFfuzRHhtb2m4rRdUFLweuonywTqZpuPZkF2aTWW"] +#PUBLIC_DHT_MADDRS = ["/dns4/agents-p2p-dht.sandbox.fetch-ai.com/tcp/9008/p2p/16Uiu2HAkxwwYLu5L1r9XXfdkKKmBT2NjF6HgndCQ2mB2PYefS2Q4"] +#PUBLIC_DHT_DELEGATE_URIS = [PUBLIC_DHT_DELEGATE_URI_1, PUBLIC_DHT_DELEGATE_URI_2] +PUBLIC_DHT_DELEGATE_URIS = ["agents-p2p-dht.sandbox.fetch-ai.com:11008", "agents-p2p-dht.sandbox.fetch-ai.com:11009"] +#PUBLIC_DHT_DELEGATE_URIS = ["agents-p2p-dht.sandbox.fetch-ai.com:11008"] AEA_DEFAULT_LAUNCH_TIMEOUT = 15 AEA_LIBP2P_LAUNCH_TIMEOUT = 660 # may download up to ~66Mb @@ -135,7 +139,7 @@ def test_communication_direct(self): for mux in multiplexers: mux.disconnect() - def test_communication_indirect(self): + def skip_test_communication_indirect(self): assert len(PUBLIC_DHT_MADDRS) > 1, "Test requires at least 2 public dht node" for i in range(len(PUBLIC_DHT_MADDRS)): @@ -278,7 +282,7 @@ def test_communication_direct(self): for mux in multiplexers: mux.disconnect() - def test_communication_indirect(self): + def skip_test_communication_indirect(self): assert ( len(PUBLIC_DHT_DELEGATE_URIS) > 1 ), "Test requires at least 2 public dht node" From ff30894ac0b744fa6e9d40d52baa124047686ba2 Mon Sep 17 00:00:00 2001 From: Lokman Rahmani Date: Fri, 25 Sep 2020 10:02:30 +0100 Subject: [PATCH 030/155] [wip] Add initial files for monitoring --- .../fetchai/connections/p2p_libp2p/aea/api.go | 57 +++++--- .../connections/p2p_libp2p/connection.py | 16 +++ .../p2p_libp2p/dht/dhtpeer/dhtpeer.go | 51 ++++++- .../p2p_libp2p/dht/dhtpeer/options.go | 8 ++ .../p2p_libp2p/dht/monitoring/file.go | 125 ++++++++++++++++++ .../p2p_libp2p/dht/monitoring/prometheus.go | 89 +++++++++++++ .../p2p_libp2p/dht/monitoring/service.go | 51 +++++++ .../fetchai/connections/p2p_libp2p/go.mod | 1 + .../fetchai/connections/p2p_libp2p/go.sum | 57 ++++++++ .../connections/p2p_libp2p/libp2p_node.go | 6 + .../connections/p2p_libp2p/utils/utils.go | 8 ++ scripts/acn/run_acn_node_standalone.py | 24 +++- 12 files changed, 467 insertions(+), 26 deletions(-) create mode 100644 packages/fetchai/connections/p2p_libp2p/dht/monitoring/file.go create mode 100644 packages/fetchai/connections/p2p_libp2p/dht/monitoring/prometheus.go create mode 100644 packages/fetchai/connections/p2p_libp2p/dht/monitoring/service.go diff --git a/packages/fetchai/connections/p2p_libp2p/aea/api.go b/packages/fetchai/connections/p2p_libp2p/aea/api.go index 15e9061099..c66ec0beab 100644 --- a/packages/fetchai/connections/p2p_libp2p/aea/api.go +++ b/packages/fetchai/connections/p2p_libp2p/aea/api.go @@ -58,23 +58,25 @@ type Pipe interface { */ type AeaApi struct { - msgin_path string - msgout_path string - agent_addr string - id string - entry_peers []string - host string - port uint16 - host_public string - port_public uint16 - host_delegate string - port_delegate uint16 - pipe Pipe - out_queue chan *Envelope - closing bool - connected bool - sandbox bool - standalone bool + msgin_path string + msgout_path string + agent_addr string + id string + entry_peers []string + host string + port uint16 + host_public string + port_public uint16 + host_delegate string + port_delegate uint16 + host_monitoring string + port_monitoring uint16 + pipe Pipe + out_queue chan *Envelope + closing bool + connected bool + sandbox bool + standalone bool } func (aea AeaApi) AeaAddress() string { @@ -97,6 +99,10 @@ func (aea AeaApi) DelegateAddress() (string, uint16) { return aea.host_delegate, aea.port_delegate } +func (aea AeaApi) MonitoringAddress() (string, uint16) { + return aea.host_monitoring, aea.port_monitoring +} + func (aea AeaApi) EntryPeers() []string { return aea.entry_peers } @@ -161,6 +167,7 @@ func (aea *AeaApi) Init() error { uri := os.Getenv("AEA_P2P_URI") uri_public := os.Getenv("AEA_P2P_URI_PUBLIC") uri_delegate := os.Getenv("AEA_P2P_DELEGATE_URI") + uri_monitoring := os.Getenv("AEA_P2P_URI_MONITORING") logger.Debug().Msgf("msgin_path: %s", aea.msgin_path) logger.Debug().Msgf("msgout_path: %s", aea.msgout_path) logger.Debug().Msgf("id: %s", aea.id) @@ -237,6 +244,22 @@ func (aea *AeaApi) Init() error { aea.port_delegate = 0 } + // parse monitoring uri + if uri_monitoring != "" { + parts = strings.SplitN(uri_monitoring, ":", -1) + if len(parts) < 2 { + err := errors.New("malformed Uri " + uri_monitoring) + logger.Error().Str("err", err.Error()).Msg("") + return err + } + aea.host_monitoring = parts[0] + port, _ = strconv.ParseUint(parts[1], 10, 16) + aea.port_monitoring = uint16(port) + } else { + aea.host_monitoring = "" + aea.port_monitoring = 0 + } + // parse entry peers multiaddrs if len(entry_peers) > 0 { aea.entry_peers = strings.SplitN(entry_peers, ",", -1) diff --git a/packages/fetchai/connections/p2p_libp2p/connection.py b/packages/fetchai/connections/p2p_libp2p/connection.py index 67107f20ac..844f2cceda 100644 --- a/packages/fetchai/connections/p2p_libp2p/connection.py +++ b/packages/fetchai/connections/p2p_libp2p/connection.py @@ -197,6 +197,7 @@ def __init__( uri: Optional[Uri] = None, public_uri: Optional[Uri] = None, delegate_uri: Optional[Uri] = None, + monitoring_uri: Optional[Uri] = None, entry_peers: Optional[Sequence[MultiAddr]] = None, log_file: Optional[str] = None, env_file: Optional[str] = None, @@ -212,6 +213,7 @@ def __init__( :param uri: libp2p node ip address and port number in format ipaddress:port. :param public_uri: libp2p node public ip address and port number in format ipaddress:port. :param delegate_uri: libp2p node delegate service ip address and port number in format ipaddress:port. + :param monitoring_uri: libp2 node monitoring ip address and port in fromat ipaddress:port :param entry_peers: libp2p entry peers multiaddresses. :param log_file: the logfile path for the libp2p node :param env_file: the env file path for the exchange of environment variables @@ -233,6 +235,9 @@ def __init__( # node delegate uri, optional self.delegate_uri = delegate_uri + # node monitoring uri, optional + self.monitoring_uri = monitoring_uri + # entry peer self.entry_peers = entry_peers if entry_peers is not None else [] @@ -318,6 +323,9 @@ async def start(self) -> None: self._config += "AEA_P2P_DELEGATE_URI={}\n".format( str(self.delegate_uri) if self.delegate_uri is not None else "" ) + self._config += "AEA_P2P_URI_MONITORING={}\n".format( + str(self.monitoring_uri) if self.monitoring_uri is not None else "" + ) env_file.write(self._config) # run node @@ -483,6 +491,9 @@ def __init__(self, **kwargs): libp2p_delegate_uri = self.configuration.config.get( "delegate_uri" ) # Optional[str] + libp2p_monitoring_uri = self.configuration.config.get( + "monitoring_uri" + ) # Optional[str] libp2p_entry_peers = self.configuration.config.get("entry_peers") if libp2p_entry_peers is None: libp2p_entry_peers = [] @@ -512,6 +523,10 @@ def __init__(self, **kwargs): if libp2p_delegate_uri is not None: delegate_uri = Uri(libp2p_delegate_uri) + monitoring_uri = None + if libp2p_monitoring_uri is not None: + monitoring_uri = Uri(libp2p_monitoring_uri) + entry_peers = [MultiAddr(maddr) for maddr in libp2p_entry_peers] # TOFIX(LR) Make sure that this node is reachable in the case where # fetchai's public dht nodes are used as entry peer and public @@ -551,6 +566,7 @@ def __init__(self, **kwargs): uri, public_uri, delegate_uri, + monitoring_uri, entry_peers, log_file, env_file, diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go index 54ac7948b7..29d3317c27 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go @@ -50,6 +50,7 @@ import ( aea "libp2p_node/aea" "libp2p_node/dht/dhtnode" + monitoring "libp2p_node/dht/monitoring" utils "libp2p_node/utils" ) @@ -71,6 +72,7 @@ const ( routingTableConnectionUpdateTimeout = 5 * time.Second newStreamTimeout = 5 * time.Second addressRegisterTimeout = 3 * time.Second + monitoringNamespace = "acn" ) // DHTPeer A full libp2p node for the Agents Communication Network. @@ -78,12 +80,13 @@ const ( // and can acts as a relay for `DHTClient`. // Optionally, it provides delegate service for tcp clients. type DHTPeer struct { - host string - port uint16 - publicHost string - publicPort uint16 - delegatePort uint16 - enableRelay bool + host string + port uint16 + publicHost string + publicPort uint16 + delegatePort uint16 + monitoringPort uint16 + enableRelay bool key crypto.PrivKey publicKey crypto.PubKey @@ -102,6 +105,7 @@ type DHTPeer struct { tcpAddresses map[string]net.Conn processEnvelope func(*aea.Envelope) error + monitor monitoring.MonitoringService closing chan struct{} goroutines *sync.WaitGroup logger zerolog.Logger @@ -262,9 +266,36 @@ func New(opts ...Option) (*DHTPeer, error) { ready.Wait() } + // setup monitoring + dhtPeer.setupMonitoring() + go dhtPeer.startMonitoring() + return dhtPeer, nil } +func (dhtPeer *DHTPeer) setupMonitoring() { + if dhtPeer.monitoringPort != 0 { + dhtPeer.monitor = monitoring.NewPrometheusMonitoring(monitoringNamespace, dhtPeer.monitoringPort) + } else { + dhtPeer.monitor = monitoring.NewFileMonitoring(monitoringNamespace) + } + + dhtPeer.addMonitoringMetrics() +} + +func (dhtPeer *DHTPeer) startMonitoring() { + _, _, linfo, _ := dhtPeer.getLoggers() + linfo().Msg("Starting monitoring service: " + dhtPeer.monitor.Info()) + dhtPeer.monitor.Start() +} + +func (dhtPeer *DHTPeer) addMonitoringMetrics() { + dhtPeer.monitor.NewGauge("delegate_connections_nbr", + "Number of active delagate connections") + dhtPeer.monitor.NewGauge("delegate_clients_total", + "Number of all delagate clients, connected or disconnected") +} + func (dhtPeer *DHTPeer) setupLogger() { fields := map[string]string{ "package": "DHTPeer", @@ -375,6 +406,12 @@ func (dhtPeer *DHTPeer) handleDelegateService(ready *sync.WaitGroup) { func (dhtPeer *DHTPeer) handleNewDelegationConnection(conn net.Conn) { defer dhtPeer.goroutines.Done() + defer conn.Close() + + nbrConns, _ := dhtPeer.monitor.GetGauge("delegate_connections_nbr") + nbrClients, _ := dhtPeer.monitor.GetGauge("delegate_clients_total") + nbrConns.Inc() + nbrClients.Inc() lerror, _, linfo, _ := dhtPeer.getLoggers() @@ -384,6 +421,7 @@ func (dhtPeer *DHTPeer) handleNewDelegationConnection(conn net.Conn) { buf, err := utils.ReadBytesConn(conn) if err != nil { lerror(err).Msg("while receiving agent's Address") + nbrConns.Dec() return } @@ -415,6 +453,7 @@ func (dhtPeer *DHTPeer) handleNewDelegationConnection(conn net.Conn) { } else { lerror(err).Msg("while reading envelope from client connection, aborting...") } + nbrConns.Dec() break } diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go index 6a5d89577a..5726af8999 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go @@ -110,3 +110,11 @@ func EnableRelayService() Option { } } + +// EnableMonitoring for dhtpeer.New +func EnableMonitoring(port uint16) Option { + return func(dhtPeer *DHTPeer) error { + dhtPeer.monitoringPort = port + return nil + } +} diff --git a/packages/fetchai/connections/p2p_libp2p/dht/monitoring/file.go b/packages/fetchai/connections/p2p_libp2p/dht/monitoring/file.go new file mode 100644 index 0000000000..d37db17363 --- /dev/null +++ b/packages/fetchai/connections/p2p_libp2p/dht/monitoring/file.go @@ -0,0 +1,125 @@ +/* -*- coding: utf-8 -*- +* ------------------------------------------------------------------------------ +* +* Copyright 2018-2019 Fetch.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. +* +* ------------------------------------------------------------------------------ + */ + +package monitoring + +import ( + "fmt" + "os" + "time" +) + +type FileGauge struct { + value float64 +} + +func (fm *FileGauge) Set(value float64) { + fm.value = value +} + +func (fm FileGauge) Get() float64 { + return fm.value +} + +func (fm *FileGauge) Inc() { + fm.value += 1. +} + +func (fm *FileGauge) Dec() { + fm.value -= 1. +} + +func (fm *FileGauge) Add(count float64) { + fm.value += count +} + +func (fm *FileGauge) Sub(count float64) { + fm.value -= count +} + +type FileMonitoring struct { + Namespace string + gaugeDict map[string]*FileGauge + + path string + closing chan struct{} +} + +func NewFileMonitoring(namespace string) *FileMonitoring { + fm := &FileMonitoring{ + Namespace: namespace, + } + + fm.gaugeDict = map[string]*FileGauge{} + cwd, _ := os.Getwd() + fm.path = cwd + "/" + fm.Namespace + ".stats" + + return fm +} + +func (fm *FileMonitoring) NewGauge(name string, description string) (Gauge, error) { + gauge := &FileGauge{} + fm.gaugeDict[name] = gauge + + return gauge, nil +} + +func (fm *FileMonitoring) GetGauge(name string) (Gauge, bool) { + gauge, ok := fm.gaugeDict[name] + return gauge, ok +} + +func (fm *FileMonitoring) Start() { + if fm.closing != nil { + return + } + fm.closing = make(chan struct{}) + + file, _ := os.OpenFile(fm.path, os.O_WRONLY|os.O_CREATE, 0666) + for { + select { + case <-fm.closing: + file.Close() + break + default: + file.Truncate(0) + file.Seek(0, 0) + file.WriteString(fm.getStats()) + time.Sleep(5 * time.Second) + } + } +} + +func (fm *FileMonitoring) Stop() { + close(fm.closing) +} + +func (fm FileMonitoring) getStats() string { + var stats string + for name, value := range fm.gaugeDict { + strValue := fmt.Sprintf("%e", value.Get()) + stats += fm.Namespace + "_" + name + " " + strValue + "\n" + } + return stats +} + +func (fm *FileMonitoring) Info() string { + return "FileMonitoring on " + fm.path +} diff --git a/packages/fetchai/connections/p2p_libp2p/dht/monitoring/prometheus.go b/packages/fetchai/connections/p2p_libp2p/dht/monitoring/prometheus.go new file mode 100644 index 0000000000..c6d73c20e4 --- /dev/null +++ b/packages/fetchai/connections/p2p_libp2p/dht/monitoring/prometheus.go @@ -0,0 +1,89 @@ +/* -*- coding: utf-8 -*- +* ------------------------------------------------------------------------------ +* +* Copyright 2018-2019 Fetch.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. +* +* ------------------------------------------------------------------------------ + */ + +package monitoring + +import ( + "net/http" + "strconv" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promauto" + "github.com/prometheus/client_golang/prometheus/promhttp" +) + +type PrometheusGauge struct { + gauge prometheus.Gauge +} + +type PrometheusMonitoring struct { + Namespace string + Port uint16 + + running bool + httpServer http.Server + //gaugeDict map[string]PrometheusGauge + gaugeDict map[string]prometheus.Gauge +} + +func NewPrometheusMonitoring(namespace string, port uint16) *PrometheusMonitoring { + pmts := &PrometheusMonitoring{ + Namespace: namespace, + Port: port, + } + pmts.gaugeDict = map[string]prometheus.Gauge{} + + return pmts +} + +func (pmts *PrometheusMonitoring) NewGauge(name string, description string) (Gauge, error) { + gauge := promauto.NewGauge(prometheus.GaugeOpts{ + Namespace: pmts.Namespace, + Name: name, + Help: description, + }) + pmts.gaugeDict[name] = gauge + + return gauge, nil +} + +func (pmts *PrometheusMonitoring) GetGauge(name string) (Gauge, bool) { + gauge, ok := pmts.gaugeDict[name] + return gauge, ok +} + +func (pmts *PrometheusMonitoring) Start() { + if pmts.running { + return + } + pmts.httpServer = http.Server{Addr: ":" + strconv.FormatInt(int64(pmts.Port), 10)} + http.Handle("/metrics", promhttp.Handler()) + + pmts.running = true + pmts.httpServer.ListenAndServe() +} + +func (pmts *PrometheusMonitoring) Stop() { + pmts.httpServer.Close() +} + +func (pmts *PrometheusMonitoring) Info() string { + return "Prometheus at " + strconv.FormatInt(int64(pmts.Port), 10) +} diff --git a/packages/fetchai/connections/p2p_libp2p/dht/monitoring/service.go b/packages/fetchai/connections/p2p_libp2p/dht/monitoring/service.go new file mode 100644 index 0000000000..481df1ea70 --- /dev/null +++ b/packages/fetchai/connections/p2p_libp2p/dht/monitoring/service.go @@ -0,0 +1,51 @@ +/* -*- coding: utf-8 -*- +* ------------------------------------------------------------------------------ +* +* Copyright 2018-2019 Fetch.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. +* +* ------------------------------------------------------------------------------ + */ + +package monitoring + +type Gauge interface { + Set(value float64) + Inc() + Dec() + Add(count float64) + Sub(count float64) +} + +type Counter interface { + Inc() + Add(count float64) +} + +type Histogram interface { + observe(value float64) +} + +type Summary interface { + observe(value float64) +} + +type MonitoringService interface { + NewGauge(name string, description string) (Gauge, error) + GetGauge(name string) (Gauge, bool) + //NewSummary(name string, description string, ) (Summary, error) + Start() + Stop() + Info() string +} diff --git a/packages/fetchai/connections/p2p_libp2p/go.mod b/packages/fetchai/connections/p2p_libp2p/go.mod index 87a013b9c1..32dcfe257a 100644 --- a/packages/fetchai/connections/p2p_libp2p/go.mod +++ b/packages/fetchai/connections/p2p_libp2p/go.mod @@ -13,6 +13,7 @@ require ( github.com/libp2p/go-libp2p-kad-dht v0.7.11 github.com/multiformats/go-multiaddr v0.2.1 github.com/multiformats/go-multihash v0.0.13 + github.com/prometheus/client_golang v1.7.1 github.com/rs/zerolog v1.19.0 google.golang.org/protobuf v1.25.0 ) diff --git a/packages/fetchai/connections/p2p_libp2p/go.sum b/packages/fetchai/connections/p2p_libp2p/go.sum index dc5d14ae61..dbcdd0cd1c 100644 --- a/packages/fetchai/connections/p2p_libp2p/go.sum +++ b/packages/fetchai/connections/p2p_libp2p/go.sum @@ -6,7 +6,15 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= @@ -21,7 +29,10 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -49,6 +60,12 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= @@ -78,6 +95,7 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gopacket v1.1.17 h1:rMrlX2ZY2UbvT+sdz3+6J+pp2z+msCq9MxTU6ymxbBY= github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= @@ -159,6 +177,9 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= @@ -167,6 +188,7 @@ github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d h1:68u9r4wEvL3gYg2jvAOgROwZ3H+Y3hIDk4tbbmIjcYQ= github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -330,6 +352,8 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.28/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= @@ -343,6 +367,10 @@ github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKU github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= @@ -388,6 +416,7 @@ github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXS github.com/multiformats/go-varint v0.0.2/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/multiformats/go-varint v0.0.5 h1:XVZwSo04Cs3j/jS0uAEPpT3JY6DzMcVLLoWOSnCxOjg= github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -402,18 +431,35 @@ github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.19.0 h1:hYz4ZVdUgjXTBUmrkrw55j1nHx68LfOKIQk5IYtyScg= github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/smola/gocompat v0.2.0/go.mod h1:1B0MlxbmoZNo3h8guHp8HztB3BSYR5itql9qtVc0ypY= github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU= @@ -493,22 +539,27 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478 h1:l5EDrHhldLYb3ZRHDUhXF7Om7MvYXnkV9/iQNo1lX6g= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -516,14 +567,18 @@ golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190526052359-791d8a0f4d09/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 h1:ogLJMz+qpzav7lGMh10LMvAkM/fAoGlaiiHYiFYdm80= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -570,6 +625,7 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= @@ -585,6 +641,7 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= diff --git a/packages/fetchai/connections/p2p_libp2p/libp2p_node.go b/packages/fetchai/connections/p2p_libp2p/libp2p_node.go index b24266726a..39438d28c3 100644 --- a/packages/fetchai/connections/p2p_libp2p/libp2p_node.go +++ b/packages/fetchai/connections/p2p_libp2p/libp2p_node.go @@ -80,6 +80,9 @@ func main() { // node delegate service address, if set _, nodePortDelegate := agent.DelegateAddress() + // node monitoring service address, if set + _, nodePortMonitoring := agent.MonitoringAddress() + // node private key key := agent.PrivateKey() @@ -112,6 +115,9 @@ func main() { if aeaAddr != "" { opts = append(opts, dhtpeer.RegisterAgentAddress(aeaAddr, agent.Connected)) } + if nodePortMonitoring != 0 { + opts = append(opts, dhtpeer.EnableMonitoring(nodePortMonitoring)) + } node, err = dhtpeer.New(opts...) } diff --git a/packages/fetchai/connections/p2p_libp2p/utils/utils.go b/packages/fetchai/connections/p2p_libp2p/utils/utils.go index 250ed82fa3..28036f58dd 100644 --- a/packages/fetchai/connections/p2p_libp2p/utils/utils.go +++ b/packages/fetchai/connections/p2p_libp2p/utils/utils.go @@ -50,6 +50,10 @@ import ( "libp2p_node/aea" ) +const ( + maxMessageSizeDelegateConnection = 1024 * 1024 * 3 // 3Mb +) + var logger zerolog.Logger = NewDefaultLogger() /* @@ -247,7 +251,11 @@ func ReadBytesConn(conn net.Conn) ([]byte, error) { if err != nil { return buf, err } + size := binary.BigEndian.Uint32(buf) + if size > maxMessageSizeDelegateConnection { + return nil, errors.New("Expected message size larger than maximum allowed") + } buf = make([]byte, size) _, err = conn.Read(buf) diff --git a/scripts/acn/run_acn_node_standalone.py b/scripts/acn/run_acn_node_standalone.py index 5ab3e59de2..2fbe351bdf 100644 --- a/scripts/acn/run_acn_node_standalone.py +++ b/scripts/acn/run_acn_node_standalone.py @@ -37,6 +37,7 @@ class AcnNodeConfig: URI = "AEA_P2P_URI" EXTERNAL_URI = "AEA_P2P_URI_PUBLIC" DELEGATE_URI = "AEA_P2P_DELEGATE_URI" + MONITORING_URI = "AEA_P2P_URI_MONITORING" ENTRY_PEERS_MADDRS = "AEA_P2P_ENTRY_URIS" IPC_IN = "AEA_TO_NODE" IPC_OUT = "NODE_TO_AEA" @@ -49,6 +50,7 @@ def __init__( uri: str, external_uri: Optional[str] = None, delegate_uri: Optional[str] = None, + monitoring_uri: Optional[str] = None, entry_peers_maddrs: Optional[List[str]] = None, enable_checks: bool = True, ): @@ -59,6 +61,7 @@ def __init__( :param uri: node local uri to bind to :param external_uri: node external uri, needed to be reached by others :param delegate_uri: node local uri for delegate service + :param monitoring_uri: node monitoring uri :param entry_peers_maddrs: multiaddresses of peers to join their network :param enable_checks: to check if provided configuration is valid """ @@ -72,6 +75,9 @@ def __init__( self.config[AcnNodeConfig.DELEGATE_URI] = ( delegate_uri if delegate_uri is not None else "" ) + self.config[AcnNodeConfig.MONITORING_URI] = ( + monitoring_uri if monitoring_uri is not None else "" + ) entry_peers_maddrs_list = ( AcnNodeConfig.LIST_SEPARATOR.join(entry_peers_maddrs) @@ -119,10 +125,11 @@ def from_file(cls, file_path: str, enable_checks: bool = True) -> "AcnNodeConfig uri = config[AcnNodeConfig.URI] external_uri = config.get(AcnNodeConfig.EXTERNAL_URI, None) delegate_uri = config.get(AcnNodeConfig.DELEGATE_URI, None) + monitoring_uri = config.get(AcnNodeConfig.MONITORING_URI, None) entry_peers = config.get(AcnNodeConfig.ENTRY_PEERS_MADDRS, "") return cls( - key, uri, external_uri, delegate_uri, entry_peers.split(","), enable_checks + key, uri, external_uri, delegate_uri, monitoring_uri, entry_peers.split(","), enable_checks ) @staticmethod @@ -142,6 +149,8 @@ def check_config(config: Dict[str, str]) -> None: AcnNodeConfig._check_uri(config[AcnNodeConfig.EXTERNAL_URI]) if config[AcnNodeConfig.DELEGATE_URI] != "": AcnNodeConfig._check_uri(config[AcnNodeConfig.DELEGATE_URI]) + if config[AcnNodeConfig.MONITORING_URI] != "": + AcnNodeConfig._check_uri(config[AcnNodeConfig.MONITORING_URI]) maddrs = config[AcnNodeConfig.ENTRY_PEERS_MADDRS].split( AcnNodeConfig.LIST_SEPARATOR @@ -256,6 +265,14 @@ def parse_commandline(): required=False, help="node's delegate service uri in format {ip_address:port}", ) + parser.add_argument( + "--uri-monitoring", + action="store", + type=str, + dest="monitoring_uri", + required=False, + help="node's monitoring service uri in format {ip_address:port}", + ) parser.add_argument( "--entry-peers-maddrs", action="store", @@ -289,10 +306,11 @@ def parse_commandline(): uri = os.environ[AcnNodeConfig.URI] external_uri = os.environ.get(AcnNodeConfig.EXTERNAL_URI) delegate_uri = os.environ.get(AcnNodeConfig.DELEGATE_URI) + monitoring_uri = os.environ.get(AcnNodeConfig.MONITORING_URI) entry_peers = os.environ.get(AcnNodeConfig.ENTRY_PEERS_MADDRS) entry_peers_list = entry_peers.split(",") if entry_peers is not None else [] node_config = AcnNodeConfig( - key, uri, external_uri, delegate_uri, entry_peers_list + key, uri, external_uri, delegate_uri, monitoring_uri, entry_peers_list ) elif args.config_from_file is not None: @@ -302,7 +320,7 @@ def parse_commandline(): with open(args.key, "r") as f: key = f.read().strip() node_config = AcnNodeConfig( - key, args.uri, args.external_uri, args.delegate_uri, args.entry_peers_maddrs + key, args.uri, args.external_uri, args.delegate_uri, args.monitoring_uri, args.entry_peers_maddrs ) node = AcnNodeStandalone(node_config, args.libp2p_node) From de60080c686385968c6b8d369f602cd0817e9e49 Mon Sep 17 00:00:00 2001 From: Lokman Rahmani Date: Wed, 7 Oct 2020 11:36:51 +0100 Subject: [PATCH 031/155] wip --- scripts/acn/k8s/secret.yaml | 2 +- scripts/acn/k8s_deploy_acn_node.py | 199 ++++++++++++++++++++----- scripts/acn/run_acn_node_standalone.py | 15 +- 3 files changed, 176 insertions(+), 40 deletions(-) diff --git a/scripts/acn/k8s/secret.yaml b/scripts/acn/k8s/secret.yaml index edc357c481..3ce888236b 100644 --- a/scripts/acn/k8s/secret.yaml +++ b/scripts/acn/k8s/secret.yaml @@ -4,4 +4,4 @@ metadata: name: ph-node-priv-key-name-here type: Opaque data: - priv-key: ph-based64-encoded-private-key-here + priv-key: ph-base64-encoded-private-key-here \ No newline at end of file diff --git a/scripts/acn/k8s_deploy_acn_node.py b/scripts/acn/k8s_deploy_acn_node.py index 1a3772bf1e..b69a342048 100644 --- a/scripts/acn/k8s_deploy_acn_node.py +++ b/scripts/acn/k8s_deploy_acn_node.py @@ -19,9 +19,15 @@ """ Deploy an ACN libp2p node to a kubernetes cluster """ import argparse +import base64 +import os +import subprocess # nosec +from os import stat from pathlib import Path from tempfile import mkdtemp -from typing import Dict, List, Optional +from typing import Dict, List, Optional, Tuple, Type, Union + +from .run_acn_node_standalone import AcnNodeConfig k8s_deployment_name = "ph-deployment-name-here" k8s_cluster_namespace = "ph-cluster-namespace-here" @@ -42,75 +48,194 @@ node_key_name = "ph-node-priv-key-name-here" node_key_encoded = "ph-base64-encoded-private-key-here" +def _execute_cmd(cmd: List[str]) -> str: + proc = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE) # nosec + out, _ = proc.communicate() + try: + proc.wait() + except: + pass + return out.decode('ascii') + +class K8sPodDeployment: + """ """ + + def __init__( + self, + root_dir: str, + deployments_files: List[Path], + dockerfile_path: Union[Path, str], + docker_remote_image: str, + ): + """ + """ + + self.deployment_files = deployments_files + self.dockerfile = dockerfile_path + self.docker_remote_image = docker_remote_image + self.root_dir = root_dir + + @property + def yaml_files(self) -> List[Path]: + return self.deployment_files -config: Dict[str, str] = {} + @property + def dockerfile(self) -> Path: + return Path(self.dockerfile) -k8s_deployment_templates = [ - "k8s/deployment.yaml", - "k8s/dns.yaml", - "k8s/secrect.yaml", - "k8s/istion.yaml", -] + @property + def docker_remote_image(self) -> str: + return self.docker_remote_image -class AcnK8sConfig: +class AcnK8sPodConfig: """ + Store, parse, and generate kubernetes deployment for ACN node """ + K8S_DEPLOYMENT_NAME = "ph-deployment-name-here" + K8S_PUBLIC_DNS = "agents-p2p-dht.sandbox.fetch-ai.com" # TODO + + DOCKER_IMAGE_REMOTE_WITH_TAG = "ph-gcr-image-with-tag-here" + + NODE_PORT = "ph-node-port-number-here" + NODE_PORT_DELEGATE = "ph-node-delegate-port-number-here" + NODE_PORT_MONITORING = "ph-node-monitoring-port-number-here" # TODO + NODE_URI_EXTERNAL = "ph-node-external-uri-here" + NODE_URI = "ph-node-local-uri-here" + NODE_URI_DELEGATE = "ph-node-delegate-uri-here" + NODE_URI_MONITORING = "ph-node-monitoring-uri-here" + NODE_ENTRY_PEERS = "ph-node-entry-peers-list-here" + NODE_KEY_NAME = "ph-node-priv-key-name-here" + NODE_KEY_ENCODED = "ph-base64-encoded-private-key-here" + NODE_LAST_ENTRY_PEER_HOST = "ph-latest-entry-peer-host-here" + NODE_LAST_ENTRY_PEER_PORT = "ph-latest-entry-peer-port-here" + + # TODO add the rest of placeholders + + Defaults: Dict[str, str] = { + K8S_DEPLOYMENT_NAME: "agents-p2p-dht", + K8S_PUBLIC_DNS: "agents-p2p-dht.sandbox.fetch-ai.com", + DOCKER_IMAGE_REMOTE_WITH_TAG: "gcr.io/fetch-ai-sandbox/agents-p2p-dht", + } + def __init__( self, root_dir: str, key_file: str, port: int, delegate_port: int, + monitoring_port: int, entry_peers: Optional[List[str]], enable_checks: bool = True, + dnsname: Optional[str] = None, ): """ + Initialize a AcnK8sPodConfig, populate the config dict + + :param : """ - self.workdir = "" - self.root_dir = root_dir - self.port = port - self.port_delegate = delegate_port - self.entry_peers = entry_peers if entry_peers is not None else [] - self.key = "" + config: Dict[str, str] = dict() + cls: Type[AcnK8sPodConfig] = AcnK8sPodConfig + + config[cls.K8S_DEPLOYMENT_NAME] = "{}-{}".format( + cls.Defaults[cls.K8S_DEPLOYMENT_NAME], str(port) + ) + config[cls.K8S_PUBLIC_DNS] = ( + dnsname if dnsname is not None else cls.Defaults[cls.K8S_PUBLIC_DNS] + ) + + config[cls.DOCKER_IMAGE_REMOTE_WITH_TAG] = cls.Defaults[ + cls.DOCKER_IMAGE_REMOTE_WITH_TAG + ] + + config[cls.NODE_PORT] = port + config[cls.NODE_PORT_DELEGATE] = delegate_port + config[cls.NODE_PORT_MONITORING] = monitoring_port + config[cls.NODE_ENTRY_PEERS] = ( + ",".join(entry_peers) if entry_peers is not None else "" + ) + peer_host, peer_port = cls._parse_multiaddr_for_uri( + entry_peers[-1] if entry_peers is not None and len(entry_peers) > 0 else "" + ) + config[cls.NODE_LAST_ENTRY_PEER_HOST] = peer_host + config[cls.NODE_LAST_ENTRY_PEER_PORT] = peer_port + + config[cls.NODE_URI] = "0.0.0.0:{}".format(port) + config[cls.NODE_URI_DELEGATE] = "0.0.0.0:{}".format(delegate_port) + config[cls.NODE_URI_MONITORING] = "0.0.0.0:{}".format(monitoring_port) + config[cls.NODE_URI_EXTERNAL] = "{}:{}".format( + dnsname if dnsname is not None else cls.Defaults[cls.K8S_PUBLIC_DNS], port + ) + with open(key_file, "r") as f: - self.key = f.read().strip() + key = f.read().strip() + config[cls.NODE_KEY_ENCODED] = base64.b64encode(key.encode("ascii")).decode( + "ascii" + ) + + files: List[Path] = [] + for path in [Path(p) for p in os.listdir(root_dir)]: + if path.is_file(path) and path.suffix == ".yaml": + files.append(path) + assert ( + len(files) > 0 + ), f"Couldn't find any template deployment file at {root_dir}" - self.deployment_files = [] - self.template_files = [] # type: List[Path] - self._fetch_deployment_templates() + self.config = config + self.template_files = files + self.dockerfile = root_dir / "Dockerfile" if enable_checks: - self._check_config() - - def _fetch_deployment_templates(self): - for template in k8s_deployment_templates: - path = Path(self.root_dir, template) - if not path.is_file(): - raise ValueError("Couldn't find deployment template file: {}".format(path)) - self.template_files.append(path) - - def generate_deployment(self): - """ """ + cls._check_config(self.config) + + @staticmethod + def _parse_multiaddr_for_uri(maddr: str) -> Tuple[str, str]: + if maddr != "": + parts = maddr.split("/") + if len(parts) == 7: + return parts[3], parts[5] + return "", "" + + @staticmethod + def check_config(config: Dict[str, str]) -> None: + AcnNodeConfig( + base64.b64decode( + config[AcnK8sPodConfig.NODE_KEY_ENCODED].encode("ascii") + ).decode("ascii"), + config[AcnK8sPodConfig.NODE_URI], + config[AcnK8sPodConfig.NODE_URI_EXTERNAL], + config[AcnK8sPodConfig.NODE_URI_DELEGATE], + config[AcnK8sPodConfig.NODE_URI_MONITORING], + config[AcnK8sPodConfig.NODE_ENTRY_PEERS], + True, + ) + + def generate_deployment(self) -> K8sPodDeployment: + """ + """ + + workdir = mkdtemp() + deployment_files: List[Path] = [] - self.workdir = mkdtemp() - for path in self.template_files: with open(path, "r") as f: content = f.read() - - content = self._substitute_placeholders(content) - with open(self.workdir / path.name, "w") as f: - f.write(content) + for placeholder, value in self.config.items(): + content = content.replace(placeholder, value) + with open(workdir / path.name, "w") as f: + f.write(content) + deployment_files.append(workdir / path.name) - def _check_config(self): + tag = _execute_cmd(["git", "describe", "--no-match", "--always", "--dirty"]) + return K8sPodDeployment(workdir, deployment_files, self.dockerfile, "{}:{}".format(config[AcnK8sPodConfig.DOCKER_IMAGE_REMOTE_WITH_TAG])) + def parse_commandline(): """ Parse script cl arguments """ diff --git a/scripts/acn/run_acn_node_standalone.py b/scripts/acn/run_acn_node_standalone.py index 2fbe351bdf..6e9cd9e746 100644 --- a/scripts/acn/run_acn_node_standalone.py +++ b/scripts/acn/run_acn_node_standalone.py @@ -129,7 +129,13 @@ def from_file(cls, file_path: str, enable_checks: bool = True) -> "AcnNodeConfig entry_peers = config.get(AcnNodeConfig.ENTRY_PEERS_MADDRS, "") return cls( - key, uri, external_uri, delegate_uri, monitoring_uri, entry_peers.split(","), enable_checks + key, + uri, + external_uri, + delegate_uri, + monitoring_uri, + entry_peers.split(","), + enable_checks, ) @staticmethod @@ -320,7 +326,12 @@ def parse_commandline(): with open(args.key, "r") as f: key = f.read().strip() node_config = AcnNodeConfig( - key, args.uri, args.external_uri, args.delegate_uri, args.monitoring_uri, args.entry_peers_maddrs + key, + args.uri, + args.external_uri, + args.delegate_uri, + args.monitoring_uri, + args.entry_peers_maddrs, ) node = AcnNodeStandalone(node_config, args.libp2p_node) From 32cbd19330f219872306440c692c6e28f7116eb5 Mon Sep 17 00:00:00 2001 From: Lokman Rahmani Date: Fri, 9 Oct 2020 19:22:19 +0100 Subject: [PATCH 032/155] Add libp2p benchmark file --- .../p2p_libp2p/dht/dhtpeer/benchmarks_test.go | 312 ++++++++++++++++++ .../p2p_libp2p/dht/dhtpeer/dhtpeer.go | 10 + .../p2p_libp2p/dht/dhtpeer/dhtpeer_test.go | 10 +- .../connections/p2p_libp2p/utils/utils.go | 6 +- 4 files changed, 334 insertions(+), 4 deletions(-) create mode 100644 packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go new file mode 100644 index 0000000000..b26f0a2c87 --- /dev/null +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go @@ -0,0 +1,312 @@ +/* -*- coding: utf-8 -*- +* ------------------------------------------------------------------------------ +* +* Copyright 2018-2019 Fetch.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. +* +* ------------------------------------------------------------------------------ + */ + +package dhtpeer + +import ( + "bufio" + "net" + "os" + "testing" + + "libp2p_node/aea" + "libp2p_node/utils" +) + +// to run benchmark: go test -p 1 -count 20 libp2p_node/dht/dhtpeer/ -run=XXX -bench B -benchtime=20x + +/* ********************************** + * baseline TCP connection benchmark + * ********************************** */ + +func acceptAndEcho(server net.Listener) { + for { + conn, err := server.Accept() + if err != nil { + return + } + go func() { + for { + buf, err := utils.ReadBytesConn(conn) + if err != nil { + return + } + err = utils.WriteBytesConn(conn, buf) + + } + }() + } +} + +func connect(uri string, b *testing.B) net.Conn { + conn, err := net.Dial("tcp", uri) + if err != nil { + b.Fatal(err.Error()) + } + return conn + +} +func sendAndReceive(conn net.Conn, buf []byte, b *testing.B) { + err := utils.WriteBytesConn(conn, buf) + if err != nil { + b.Fatal(err.Error()) + } + _, err = utils.ReadBytesConn(conn) +} + +func connectAndSend(buf []byte, b *testing.B) { + conn := connect("localhost:12345", b) + sendAndReceive(conn, buf, b) + conn.Close() +} + +func BenchmarkBaselineTCPEcho(b *testing.B) { + + tcpServer, err := net.Listen("tcp", "localhost:12345") + if err != nil { + b.Fatal(err.Error()) + } + go acceptAndEcho(tcpServer) + buf := make([]byte, 200) + conn := connect("localhost:12345", b) + + for i := 0; i < b.N; i++ { + sendAndReceive(conn, buf, b) + } + b.StopTimer() + tcpServer.Close() + b.StartTimer() + +} + +func BenchmarkBaselineTCPConnectAndEcho(b *testing.B) { + + tcpServer, err := net.Listen("tcp", "localhost:12345") + if err != nil { + b.Fatal(err.Error()) + } + go acceptAndEcho(tcpServer) + buf := make([]byte, 200) + + for i := 0; i < b.N; i++ { + //var elapsed time.Duration + //start := time.Now() + b.ResetTimer() + connectAndSend(buf, b) + b.StopTimer() + //elapsed = time.Since(start) + //fmt.Println("Elapsed ", elapsed.String()) + b.StartTimer() + } + b.StopTimer() + tcpServer.Close() + b.StartTimer() + +} + +/* ********************************** + * Peer DHT operations benchmark + * ********************************** */ + +var keysFilePath = "/home/lokman/dev/aea/agents-aea/benchmark_keys.txt" +var addrsFilePath = "/home/lokman/dev/aea/agents-aea/benchmark_addrs.txt" + +func getKeysAndAddrs(b *testing.B) (keys []string, addrs []string) { + keysFile, err := os.Open(keysFilePath) + if err != nil { + b.Fatal(err) + } + defer keysFile.Close() + addrsFile, err := os.Open(addrsFilePath) + if err != nil { + b.Fatal(err) + } + defer addrsFile.Close() + + ksc := bufio.NewScanner(keysFile) + asc := bufio.NewScanner(addrsFile) + + keys = []string{} + addrs = []string{} + for ksc.Scan() && asc.Scan() { + keys = append(keys, ksc.Text()) + addrs = append(addrs, asc.Text()) + } + return keys, addrs +} + +func deployPeers(number uint16, b *testing.B) ([]*DHTPeer, []string) { + keys, addrs := getKeysAndAddrs(b) + peers := make([]*DHTPeer, 0, number) + for i := uint16(0); i < number; i++ { + entry := []string{} + if i > 0 { + entry = append(entry, peers[i-1].MultiAddr()) + } + peer, _, err := SetupLocalDHTPeer( + keys[i], addrs[i], DefaultLocalPort+i, 0, + entry, + ) + if err != nil { + b.Fatal("Failed to initialize DHTPeer:", err) + } + peers = append(peers, peer) + } + return peers, addrs +} + +func closePeers(peers ...*DHTPeer) { + for _, peer := range peers { + peer.Close() + } +} + +func benchmarkDHTPeerRegisterAddress(npeers uint16, b *testing.B) { + peers, addrs := deployPeers(npeers, b) + ensureAddressAnnounced(peers...) + defer closePeers(peers...) + + peer, peerCleanup, err := SetupLocalDHTPeer( + FetchAITestKeys[1], "", DefaultLocalPort+npeers+1, 0, + []string{peers[0].MultiAddr()}, + ) + if err != nil { + b.Fatal(err.Error()) + } + defer peerCleanup() + + for i := 0; i < b.N; i++ { + b.ResetTimer() + peer.registerAgentAddress(addrs[len(addrs)-1-i%len(addrs)]) + } +} + +func BenchmarkDHTPeerRegisterAddress2(b *testing.B) { benchmarkDHTPeerRegisterAddress(2, b) } +func BenchmarkDHTPeerRegisterAddress8(b *testing.B) { benchmarkDHTPeerRegisterAddress(8, b) } +func BenchmarkDHTPeerRegisterAddress32(b *testing.B) { benchmarkDHTPeerRegisterAddress(32, b) } +func BenchmarkDHTPeerRegisterAddress128(b *testing.B) { benchmarkDHTPeerRegisterAddress(128, b) } +func BenchmarkDHTPeerRegisterAddress256(b *testing.B) { benchmarkDHTPeerRegisterAddress(256, b) } + +func benchmarkDHTPeerLookupAddress(npeers uint16, b *testing.B) { + peers, addrs := deployPeers(npeers, b) + ensureAddressAnnounced(peers...) + defer closePeers(peers...) + + peer, peerCleanup, err := SetupLocalDHTPeer( + FetchAITestKeys[1], AgentsTestAddresses[1], DefaultLocalPort+npeers+1, 0, + []string{peers[len(peers)-1].MultiAddr()}, + ) + if err != nil { + b.Fatal(err.Error()) + } + defer peerCleanup() + ensureAddressAnnounced(peer) + + for i := 0; i < b.N; i++ { + b.ResetTimer() + peer.lookupAddressDHT(addrs[len(peers)-1-i%len(peers)]) + } +} + +func BenchmarkDHTPeerLookupAddress2(b *testing.B) { benchmarkDHTPeerLookupAddress(2, b) } +func BenchmarkDHTPeerLookupAddress8(b *testing.B) { benchmarkDHTPeerLookupAddress(8, b) } +func BenchmarkDHTPeerLookupAddress32(b *testing.B) { benchmarkDHTPeerLookupAddress(32, b) } +func BenchmarkDHTPeerLookupAddress128(b *testing.B) { benchmarkDHTPeerLookupAddress(128, b) } +func BenchmarkDHTPeerLookupAddress256(b *testing.B) { benchmarkDHTPeerLookupAddress(256, b) } + +func benchmarkDHTPeerJoin(npeers uint16, b *testing.B) { + peers, _ := deployPeers(npeers, b) + ensureAddressAnnounced(peers...) + defer closePeers(peers...) + + for i := 0; i < b.N; i++ { + b.ResetTimer() + peer, peerCleanup, err := SetupLocalDHTPeer( + FetchAITestKeys[1], AgentsTestAddresses[1], DefaultLocalPort+npeers+1, 0, + []string{peers[i%len(peers)].MultiAddr()}, + ) + if err != nil { + b.Fatal(err.Error()) + } + ensureAddressAnnounced(peer) + b.StopTimer() + peerCleanup() + b.StartTimer() + } +} + +func BenchmarkDHTPeerJoin2(b *testing.B) { benchmarkDHTPeerJoin(2, b) } +func BenchmarkDHTPeerJoin8(b *testing.B) { benchmarkDHTPeerJoin(8, b) } +func BenchmarkDHTPeerJoin32(b *testing.B) { benchmarkDHTPeerJoin(32, b) } +func BenchmarkDHTPeerJoin128(b *testing.B) { benchmarkDHTPeerJoin(128, b) } +func BenchmarkDHTPeerJoin256(b *testing.B) { benchmarkDHTPeerJoin(256, b) } +func setupEchoServicePeers(peers ...*DHTPeer) { + for _, peer := range peers { + peer.ProcessEnvelope(func(envel *aea.Envelope) error { + err := peer.RouteEnvelope(&aea.Envelope{ + To: envel.Sender, + Sender: envel.To, + }) + return err + }) + } +} + +func benchmarkDHTPeerEchoMessage(npeers uint16, b *testing.B) { + peers, addrs := deployPeers(npeers, b) + ensureAddressAnnounced(peers...) + defer closePeers(peers...) + setupEchoServicePeers(peers...) + + peer, peerCleanup, err := SetupLocalDHTPeer( + FetchAITestKeys[1], AgentsTestAddresses[1], DefaultLocalPort+npeers+1, 0, + []string{peers[len(peers)-1].MultiAddr()}, + ) + if err != nil { + b.Fatal(err.Error()) + } + defer peerCleanup() + ensureAddressAnnounced(peer) + rxPeer := make(chan *aea.Envelope, 10) + peer.ProcessEnvelope(func(envel *aea.Envelope) error { + rxPeer <- envel + return nil + }) + + for i := 0; i < b.N; i++ { + envel := &aea.Envelope{ + To: addrs[len(peers)-1-i%len(peers)], + Sender: AgentsTestAddresses[1], + Message: make([]byte, 101), + } + b.ResetTimer() + err = peer.RouteEnvelope(envel) + if err != nil { + b.Error("Failed to RouteEnvelope from peer 2 to peer 1:", err) + } + <-rxPeer + } +} + +func BenchmarkDHTPeerEchoMessage2(b *testing.B) { benchmarkDHTPeerEchoMessage(2, b) } +func BenchmarkDHTPeerEchoMessage8(b *testing.B) { benchmarkDHTPeerEchoMessage(8, b) } +func BenchmarkDHTPeerEchoMessage32(b *testing.B) { benchmarkDHTPeerEchoMessage(32, b) } +func BenchmarkDHTPeerEchoMessage128(b *testing.B) { benchmarkDHTPeerEchoMessage(128, b) } +func BenchmarkDHTPeerEchoMessage256(b *testing.B) { benchmarkDHTPeerEchoMessage(256, b) } diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go index 54ac7948b7..32f006ffb9 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go @@ -818,6 +818,7 @@ func (dhtPeer *DHTPeer) handleAeaRegisterStream(stream network.Stream) { func (dhtPeer *DHTPeer) registerAgentAddress(addr string) error { _, _, linfo, _ := dhtPeer.getLoggers() + //_, lwarn, linfo, _ := dhtPeer.getLoggers() addressCID, err := utils.ComputeCID(addr) if err != nil { @@ -831,7 +832,16 @@ func (dhtPeer *DHTPeer) registerAgentAddress(addr string) error { linfo().Str("op", "register"). Str("addr", addr). Msgf("Announcing address to the dht with cid key %s", addressCID.String()) + //var elapsed time.Duration + //start := time.Now() err = dhtPeer.dht.Provide(ctx, addressCID, true) + //elapsed = time.Since(start) + + /* + lwarn().Str("op", "register"). + Str("addr", addr). + Msgf("RegisterAddress %l", elapsed.Microseconds()) + */ if err != context.DeadlineExceeded { return err } diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer_test.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer_test.go index 8808fd8461..70efa756a6 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer_test.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer_test.go @@ -1322,12 +1322,18 @@ func SetupLocalDHTPeer(key string, addr string, dhtPort uint16, delegatePort uin LocalURI(DefaultLocalHost, dhtPort), PublicURI(DefaultLocalHost, dhtPort), IdentityFromFetchAIKey(key), - RegisterAgentAddress(addr, func() bool { return true }), EnableRelayService(), - EnableDelegateService(delegatePort), BootstrapFrom(entry), } + if addr != "" { + opts = append(opts, RegisterAgentAddress(addr, func() bool { return true })) + } + + if delegatePort != 0 { + opts = append(opts, EnableDelegateService(delegatePort)) + } + dhtPeer, err := New(opts...) if err != nil { return nil, nil, err diff --git a/packages/fetchai/connections/p2p_libp2p/utils/utils.go b/packages/fetchai/connections/p2p_libp2p/utils/utils.go index 250ed82fa3..b2f98dacef 100644 --- a/packages/fetchai/connections/p2p_libp2p/utils/utils.go +++ b/packages/fetchai/connections/p2p_libp2p/utils/utils.go @@ -50,6 +50,7 @@ import ( "libp2p_node/aea" ) +var LoggerGlobalLevel zerolog.Level = zerolog.DebugLevel var logger zerolog.Logger = NewDefaultLogger() /* @@ -69,7 +70,7 @@ func newConsoleLogger() zerolog.Logger { func NewDefaultLogger() zerolog.Logger { return newConsoleLogger(). With().Timestamp(). - Logger() + Logger().Level(LoggerGlobalLevel) } // NewDefaultLoggerWithFields zerolog console writer @@ -79,7 +80,8 @@ func NewDefaultLoggerWithFields(fields map[string]string) zerolog.Logger { for key, val := range fields { logger = logger.Str(key, val) } - return logger.Logger() + return logger.Logger().Level(LoggerGlobalLevel) + } /* From 11f5459cb84f60e6cacf1f43ea30885e4b66dd25 Mon Sep 17 00:00:00 2001 From: Lokman Rahmani Date: Fri, 9 Oct 2020 19:44:47 +0100 Subject: [PATCH 033/155] Update fingerprint --- .../fetchai/agents/tac_controller_contract/aea-config.yaml | 4 ++-- .../agents/tac_participant_contract/aea-config.yaml | 4 ++-- packages/fetchai/connections/p2p_libp2p/connection.yaml | 7 ++++--- .../connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go | 4 ++-- packages/hashes.csv | 6 +++--- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/fetchai/agents/tac_controller_contract/aea-config.yaml b/packages/fetchai/agents/tac_controller_contract/aea-config.yaml index 4bad5ad035..9846c1d80b 100644 --- a/packages/fetchai/agents/tac_controller_contract/aea-config.yaml +++ b/packages/fetchai/agents/tac_controller_contract/aea-config.yaml @@ -37,8 +37,8 @@ default_routing: fetchai/ledger_api:0.4.0: fetchai/ledger:0.6.0 fetchai/oef_search:0.7.0: fetchai/soef:0.9.0 --- -author: fetchai name: soef +author: fetchai version: 0.9.0 type: connection config: @@ -47,8 +47,8 @@ config: soef_addr: soef.fetch.ai soef_port: 9002 --- -author: fetchai name: tac_control +author: fetchai version: 0.8.0 type: skill is_abstract: true diff --git a/packages/fetchai/agents/tac_participant_contract/aea-config.yaml b/packages/fetchai/agents/tac_participant_contract/aea-config.yaml index a1a2ff2688..32726f5f0d 100644 --- a/packages/fetchai/agents/tac_participant_contract/aea-config.yaml +++ b/packages/fetchai/agents/tac_participant_contract/aea-config.yaml @@ -34,12 +34,12 @@ default_routing: fetchai/ledger_api:0.4.0: fetchai/ledger:0.6.0 fetchai/oef_search:0.7.0: fetchai/soef:0.9.0 --- -author: fetchai name: tac_participation +author: fetchai version: 0.9.0 type: skill --- -author: fetchai name: tac_negotiation +author: fetchai version: 0.10.0 type: skill diff --git a/packages/fetchai/connections/p2p_libp2p/connection.yaml b/packages/fetchai/connections/p2p_libp2p/connection.yaml index 323a12b3e1..9133bb6435 100644 --- a/packages/fetchai/connections/p2p_libp2p/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p/connection.yaml @@ -21,14 +21,15 @@ fingerprint: dht/dhtclient/options.go: QmPorj38wNrxGrzsbFe5wwLmiHzxbTJ2VsgvSd8tLDYS8s dht/dhtnode/dhtnode.go: QmbyhgbCSAbQ1QsDw7FM7Nt5sZcvhbupA1jv5faxutbV7N dht/dhtnode/streams.go: Qmc2JcyiU4wHsgDj6aUunMAp4c5yMzo2ixeqRZHSW5PVwo - dht/dhtpeer/dhtpeer.go: QmScT5pyzFaDV7KWxe8AVzsU1jCi4TNKrkyh22ziXjMjcc - dht/dhtpeer/dhtpeer_test.go: QmeCWUddyT8Bk9gXaafvksExj8ceMUmcdP8dLEcp7P2UFF + dht/dhtpeer/benchmarks_test.go: Qmc1G3aaEgR7TdrvbUMkDCP8aWrznBZKUYQwUUpwjU8azK + dht/dhtpeer/dhtpeer.go: QmReF7a4G9rADbiN43WJAiwdmSeWW7CibHoBu26UcNDgSF + dht/dhtpeer/dhtpeer_test.go: QmeWksk2g4hmQPNUeF9SbdAdmMmAL2RhkHLcNHrFcBeGby dht/dhtpeer/options.go: QmVgL17zbVSU1DfV4TMd3NZQn8t3Qe4zqtCHMRfD4eCLd9 dht/dhttests/dhttests.go: QmZpYRCiVARGL1n4nDwqjhzHA95Y4ACNWoa3HSDnB6PitK go.mod: QmacqAAxC3dkydmfbEyVWVkMDmZECTWKZcBoPyRSnheQzD go.sum: Qmbu57aSPSqanJ1xHNmMHAqLL8nvCV61URknizsKJDvenG libp2p_node.go: QmYczbp9C62ykF4pUG2onF8nkYvfKsEsqwWxcLWcWwcP9u - utils/utils.go: QmSdLqVNwtupDKxvE2qbCEEoACCaRG2ccNPq6p34YtrDqA + utils/utils.go: QmaqHQATfcrhtzLqwEGGmkqSx2qucoKk4HMSK7NirnHzHT fingerprint_ignore_patterns: [] protocols: [] class_name: P2PLibp2pConnection diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go index b26f0a2c87..5a461f94fb 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go @@ -125,8 +125,8 @@ func BenchmarkBaselineTCPConnectAndEcho(b *testing.B) { * Peer DHT operations benchmark * ********************************** */ -var keysFilePath = "/home/lokman/dev/aea/agents-aea/benchmark_keys.txt" -var addrsFilePath = "/home/lokman/dev/aea/agents-aea/benchmark_addrs.txt" +var keysFilePath = "/path/to/file/benchmark_keys.txt" +var addrsFilePath = "/path/to/file/benchmark_addrs.txt" func getKeysAndAddrs(b *testing.B) (keys []string, addrs []string) { keysFile, err := os.Open(keysFilePath) diff --git a/packages/hashes.csv b/packages/hashes.csv index 076c12ab50..ca5546477e 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -12,9 +12,9 @@ fetchai/agents/ml_model_trainer,QmWnBK6TGFro2VrtcwwBq1eztiT5y4DV92DdeyHPQqGzcY fetchai/agents/my_first_aea,QmYqeuaG7mkxqPZTM2qUHP2bMm1A7VsSDLi6BfW6SaFbuZ fetchai/agents/simple_service_registration,QmY4oz8n2zjJnAa3vHRRDuzpZi8Taf8qsScX7NJoXrTk3u fetchai/agents/tac_controller,QmWVvJemSdE5N5iyMuDt5ZHh1FA32oijHxBqq91zaNkdY3 -fetchai/agents/tac_controller_contract,QmUaxxECe2Zmftqwc5qT85S521mJuu5rBd9o8t8HSQfYLM +fetchai/agents/tac_controller_contract,QmSZRM9QqFpZDosBuY1gCgX4Ho8icAMAnyh6VMti6UdwVE fetchai/agents/tac_participant,QmRmswKxJ9mdQe6zFRqxr9U1ZpYTybQf3DKsrAySt39aVc -fetchai/agents/tac_participant_contract,QmRhzdwU4rNWPnofhXtsCmQav5imfAyMm4GiDVZx7zfT8t +fetchai/agents/tac_participant_contract,QmVuA9fJAM2jrJH6PCfcq12mgp6999LFCktwkLNjhHhsLz fetchai/agents/thermometer_aea,QmT1GNUCcB6xqnmB1vv3jTs4HqeYM6tLnnL4TSjv5raHpk fetchai/agents/thermometer_client,QmdWMJCb7Pkz8F3emJ8wKhNWpnEUXHpBFQTGcmJyziu6kH fetchai/agents/weather_client,Qmd5iiwyqEuw7Fg8NkdLsNjkuZQRatNRADpXVXwG13BvtP @@ -25,7 +25,7 @@ fetchai/connections/http_server,QmT6JV2sB1rv7XZgx1bEpMjfQJAtpq775D2n8yvzKzSXYK fetchai/connections/ledger,QmPwbSbzK66j147Bjjxaqp3jRAR2ui59zthqFAqB5i7Uxy fetchai/connections/local,QmNXMDuB7vfGrhv2Q4R8REDicSUgXfVPd7x1tAP3847jsr fetchai/connections/oef,QmZ83PNJ8BfEii7EBrw4WPguEZXt3ZSXuUJDbx4Ehem8Zw -fetchai/connections/p2p_libp2p,QmbPgTY8am7PgLoP3ksaHyuwZzfFGXN4cBrvjV9byramEh +fetchai/connections/p2p_libp2p,QmW9jyBeqJX5eitWq7F5o2FWseNzW8SGLrcuhE91Dw6Q9U fetchai/connections/p2p_libp2p_client,Qmbi1hU4hNeRms1BxYzAhLJMr3uPyr7uLnK3BAy2jozdYH fetchai/connections/p2p_stub,QmecGYtXsb7HA2dSWrw2ARNTPFqZsKXAbVroBo57cdUQSG fetchai/connections/scaffold,QmNUta43nLexAHaXLgmLQYEjntLXSV6MLNvc6Q2CTx7eBS From 5a2bb78c669eacb55d39bff7c7a0fd3f4524bb9e Mon Sep 17 00:00:00 2001 From: Lokman Rahmani Date: Sat, 10 Oct 2020 11:41:25 +0100 Subject: [PATCH 034/155] Disable peer logging for benchmark --- .../connections/p2p_libp2p/connection.yaml | 8 +- .../p2p_libp2p/dht/dhtpeer/benchmarks_test.go | 154 ++++++++++++------ .../p2p_libp2p/dht/dhtpeer/dhtpeer.go | 5 + .../p2p_libp2p/dht/dhtpeer/options.go | 10 ++ .../connections/p2p_libp2p/utils/utils.go | 11 +- packages/hashes.csv | 2 +- 6 files changed, 132 insertions(+), 58 deletions(-) diff --git a/packages/fetchai/connections/p2p_libp2p/connection.yaml b/packages/fetchai/connections/p2p_libp2p/connection.yaml index 9133bb6435..45a0090225 100644 --- a/packages/fetchai/connections/p2p_libp2p/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p/connection.yaml @@ -21,15 +21,15 @@ fingerprint: dht/dhtclient/options.go: QmPorj38wNrxGrzsbFe5wwLmiHzxbTJ2VsgvSd8tLDYS8s dht/dhtnode/dhtnode.go: QmbyhgbCSAbQ1QsDw7FM7Nt5sZcvhbupA1jv5faxutbV7N dht/dhtnode/streams.go: Qmc2JcyiU4wHsgDj6aUunMAp4c5yMzo2ixeqRZHSW5PVwo - dht/dhtpeer/benchmarks_test.go: Qmc1G3aaEgR7TdrvbUMkDCP8aWrznBZKUYQwUUpwjU8azK - dht/dhtpeer/dhtpeer.go: QmReF7a4G9rADbiN43WJAiwdmSeWW7CibHoBu26UcNDgSF + dht/dhtpeer/benchmarks_test.go: QmVhWzMcvNvAYwdd7bUabymCidZR1SBqbqR1qP6QHrpXv5 + dht/dhtpeer/dhtpeer.go: QmV4qpQXUV3e6hsgpxDWBDqKWHDJeTZMuHzrkGciZTBrZT dht/dhtpeer/dhtpeer_test.go: QmeWksk2g4hmQPNUeF9SbdAdmMmAL2RhkHLcNHrFcBeGby - dht/dhtpeer/options.go: QmVgL17zbVSU1DfV4TMd3NZQn8t3Qe4zqtCHMRfD4eCLd9 + dht/dhtpeer/options.go: QmbZkL4x9N3WwMxibXR9gkcdanskRazXaq4LNXf1GwPao9 dht/dhttests/dhttests.go: QmZpYRCiVARGL1n4nDwqjhzHA95Y4ACNWoa3HSDnB6PitK go.mod: QmacqAAxC3dkydmfbEyVWVkMDmZECTWKZcBoPyRSnheQzD go.sum: Qmbu57aSPSqanJ1xHNmMHAqLL8nvCV61URknizsKJDvenG libp2p_node.go: QmYczbp9C62ykF4pUG2onF8nkYvfKsEsqwWxcLWcWwcP9u - utils/utils.go: QmaqHQATfcrhtzLqwEGGmkqSx2qucoKk4HMSK7NirnHzHT + utils/utils.go: QmWMTas6nMGL5R4MtEZcAq8XEse8e66AhcnW7hJV11dnki fingerprint_ignore_patterns: [] protocols: [] class_name: P2PLibp2pConnection diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go index 5a461f94fb..933312ec51 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go @@ -28,14 +28,28 @@ import ( "libp2p_node/aea" "libp2p_node/utils" + + "github.com/rs/zerolog" ) -// to run benchmark: go test -p 1 -count 20 libp2p_node/dht/dhtpeer/ -run=XXX -bench B -benchtime=20x +/* ********** +* How to run +* *********** + + $ go test -p 1 -count 20 libp2p_node/dht/dhtpeer/ -run=XXX -bench . -benchtime=20x + +*/ + +var keysFilePath = "/path/to/file/benchmark_keys.txt" +var addrsFilePath = "/path/to/file/benchmark_addrs.txt" +var tcpUri = "localhost:12345" /* ********************************** * baseline TCP connection benchmark * ********************************** */ +// helpers + func acceptAndEcho(server net.Listener) { for { conn, err := server.Accept() @@ -72,20 +86,22 @@ func sendAndReceive(conn net.Conn, buf []byte, b *testing.B) { } func connectAndSend(buf []byte, b *testing.B) { - conn := connect("localhost:12345", b) + conn := connect(tcpUri, b) sendAndReceive(conn, buf, b) conn.Close() } +// benchs + func BenchmarkBaselineTCPEcho(b *testing.B) { - tcpServer, err := net.Listen("tcp", "localhost:12345") + tcpServer, err := net.Listen("tcp", tcpUri) if err != nil { b.Fatal(err.Error()) } go acceptAndEcho(tcpServer) buf := make([]byte, 200) - conn := connect("localhost:12345", b) + conn := connect(tcpUri, b) for i := 0; i < b.N; i++ { sendAndReceive(conn, buf, b) @@ -98,7 +114,7 @@ func BenchmarkBaselineTCPEcho(b *testing.B) { func BenchmarkBaselineTCPConnectAndEcho(b *testing.B) { - tcpServer, err := net.Listen("tcp", "localhost:12345") + tcpServer, err := net.Listen("tcp", tcpUri) if err != nil { b.Fatal(err.Error()) } @@ -125,8 +141,7 @@ func BenchmarkBaselineTCPConnectAndEcho(b *testing.B) { * Peer DHT operations benchmark * ********************************** */ -var keysFilePath = "/path/to/file/benchmark_keys.txt" -var addrsFilePath = "/path/to/file/benchmark_addrs.txt" +// helpers func getKeysAndAddrs(b *testing.B) (keys []string, addrs []string) { keysFile, err := os.Open(keysFilePath) @@ -152,6 +167,42 @@ func getKeysAndAddrs(b *testing.B) (keys []string, addrs []string) { return keys, addrs } +func setupLocalDHTPeerForBench(key string, addr string, dhtPort uint16, delegatePort uint16, entry []string) (*DHTPeer, func(), error) { + /* + peer, peerCleanup, err := SetupLocalDHTPeer(key, addr, dhtPort, delegatePort, entry) + if err == nil { + peer.SetLogLevel(zerolog.Disabled) + utils.SetLoggerLevel(zerolog.Disabled) + } + return peer, peerCleanup, err + */ + + opts := []Option{ + LocalURI(DefaultLocalHost, dhtPort), + PublicURI(DefaultLocalHost, dhtPort), + IdentityFromFetchAIKey(key), + EnableRelayService(), + BootstrapFrom(entry), + } + + if addr != "" { + opts = append(opts, RegisterAgentAddress(addr, func() bool { return true })) + } + + if delegatePort != 0 { + opts = append(opts, EnableDelegateService(delegatePort)) + } + + dhtPeer, err := New(opts...) + if err != nil { + return nil, nil, err + } + + utils.SetLoggerLevel(zerolog.Disabled) + + return dhtPeer, func() { dhtPeer.Close() }, nil +} + func deployPeers(number uint16, b *testing.B) ([]*DHTPeer, []string) { keys, addrs := getKeysAndAddrs(b) peers := make([]*DHTPeer, 0, number) @@ -160,7 +211,7 @@ func deployPeers(number uint16, b *testing.B) ([]*DHTPeer, []string) { if i > 0 { entry = append(entry, peers[i-1].MultiAddr()) } - peer, _, err := SetupLocalDHTPeer( + peer, _, err := setupLocalDHTPeerForBench( keys[i], addrs[i], DefaultLocalPort+i, 0, entry, ) @@ -178,12 +229,26 @@ func closePeers(peers ...*DHTPeer) { } } -func benchmarkDHTPeerRegisterAddress(npeers uint16, b *testing.B) { +func setupEchoServicePeers(peers ...*DHTPeer) { + for _, peer := range peers { + peer.ProcessEnvelope(func(envel *aea.Envelope) error { + err := peer.RouteEnvelope(&aea.Envelope{ + To: envel.Sender, + Sender: envel.To, + }) + return err + }) + } +} + +// benchs + +func benchmarkAgentRegistration(npeers uint16, b *testing.B) { peers, addrs := deployPeers(npeers, b) ensureAddressAnnounced(peers...) defer closePeers(peers...) - peer, peerCleanup, err := SetupLocalDHTPeer( + peer, peerCleanup, err := setupLocalDHTPeerForBench( FetchAITestKeys[1], "", DefaultLocalPort+npeers+1, 0, []string{peers[0].MultiAddr()}, ) @@ -198,18 +263,12 @@ func benchmarkDHTPeerRegisterAddress(npeers uint16, b *testing.B) { } } -func BenchmarkDHTPeerRegisterAddress2(b *testing.B) { benchmarkDHTPeerRegisterAddress(2, b) } -func BenchmarkDHTPeerRegisterAddress8(b *testing.B) { benchmarkDHTPeerRegisterAddress(8, b) } -func BenchmarkDHTPeerRegisterAddress32(b *testing.B) { benchmarkDHTPeerRegisterAddress(32, b) } -func BenchmarkDHTPeerRegisterAddress128(b *testing.B) { benchmarkDHTPeerRegisterAddress(128, b) } -func BenchmarkDHTPeerRegisterAddress256(b *testing.B) { benchmarkDHTPeerRegisterAddress(256, b) } - -func benchmarkDHTPeerLookupAddress(npeers uint16, b *testing.B) { +func benchmarkAgentLookup(npeers uint16, b *testing.B) { peers, addrs := deployPeers(npeers, b) ensureAddressAnnounced(peers...) defer closePeers(peers...) - peer, peerCleanup, err := SetupLocalDHTPeer( + peer, peerCleanup, err := setupLocalDHTPeerForBench( FetchAITestKeys[1], AgentsTestAddresses[1], DefaultLocalPort+npeers+1, 0, []string{peers[len(peers)-1].MultiAddr()}, ) @@ -225,20 +284,14 @@ func benchmarkDHTPeerLookupAddress(npeers uint16, b *testing.B) { } } -func BenchmarkDHTPeerLookupAddress2(b *testing.B) { benchmarkDHTPeerLookupAddress(2, b) } -func BenchmarkDHTPeerLookupAddress8(b *testing.B) { benchmarkDHTPeerLookupAddress(8, b) } -func BenchmarkDHTPeerLookupAddress32(b *testing.B) { benchmarkDHTPeerLookupAddress(32, b) } -func BenchmarkDHTPeerLookupAddress128(b *testing.B) { benchmarkDHTPeerLookupAddress(128, b) } -func BenchmarkDHTPeerLookupAddress256(b *testing.B) { benchmarkDHTPeerLookupAddress(256, b) } - -func benchmarkDHTPeerJoin(npeers uint16, b *testing.B) { +func benchmarkPeerJoin(npeers uint16, b *testing.B) { peers, _ := deployPeers(npeers, b) ensureAddressAnnounced(peers...) defer closePeers(peers...) for i := 0; i < b.N; i++ { b.ResetTimer() - peer, peerCleanup, err := SetupLocalDHTPeer( + peer, peerCleanup, err := setupLocalDHTPeerForBench( FetchAITestKeys[1], AgentsTestAddresses[1], DefaultLocalPort+npeers+1, 0, []string{peers[i%len(peers)].MultiAddr()}, ) @@ -252,30 +305,13 @@ func benchmarkDHTPeerJoin(npeers uint16, b *testing.B) { } } -func BenchmarkDHTPeerJoin2(b *testing.B) { benchmarkDHTPeerJoin(2, b) } -func BenchmarkDHTPeerJoin8(b *testing.B) { benchmarkDHTPeerJoin(8, b) } -func BenchmarkDHTPeerJoin32(b *testing.B) { benchmarkDHTPeerJoin(32, b) } -func BenchmarkDHTPeerJoin128(b *testing.B) { benchmarkDHTPeerJoin(128, b) } -func BenchmarkDHTPeerJoin256(b *testing.B) { benchmarkDHTPeerJoin(256, b) } -func setupEchoServicePeers(peers ...*DHTPeer) { - for _, peer := range peers { - peer.ProcessEnvelope(func(envel *aea.Envelope) error { - err := peer.RouteEnvelope(&aea.Envelope{ - To: envel.Sender, - Sender: envel.To, - }) - return err - }) - } -} - -func benchmarkDHTPeerEchoMessage(npeers uint16, b *testing.B) { +func benchmarkPeerEcho(npeers uint16, b *testing.B) { peers, addrs := deployPeers(npeers, b) ensureAddressAnnounced(peers...) defer closePeers(peers...) setupEchoServicePeers(peers...) - peer, peerCleanup, err := SetupLocalDHTPeer( + peer, peerCleanup, err := setupLocalDHTPeerForBench( FetchAITestKeys[1], AgentsTestAddresses[1], DefaultLocalPort+npeers+1, 0, []string{peers[len(peers)-1].MultiAddr()}, ) @@ -305,8 +341,26 @@ func benchmarkDHTPeerEchoMessage(npeers uint16, b *testing.B) { } } -func BenchmarkDHTPeerEchoMessage2(b *testing.B) { benchmarkDHTPeerEchoMessage(2, b) } -func BenchmarkDHTPeerEchoMessage8(b *testing.B) { benchmarkDHTPeerEchoMessage(8, b) } -func BenchmarkDHTPeerEchoMessage32(b *testing.B) { benchmarkDHTPeerEchoMessage(32, b) } -func BenchmarkDHTPeerEchoMessage128(b *testing.B) { benchmarkDHTPeerEchoMessage(128, b) } -func BenchmarkDHTPeerEchoMessage256(b *testing.B) { benchmarkDHTPeerEchoMessage(256, b) } +func BenchmarkAgentRegistration2(b *testing.B) { benchmarkAgentRegistration(2, b) } +func BenchmarkAgentRegistration8(b *testing.B) { benchmarkAgentRegistration(8, b) } +func BenchmarkAgentRegistration32(b *testing.B) { benchmarkAgentRegistration(32, b) } +func BenchmarkAgentRegistration128(b *testing.B) { benchmarkAgentRegistration(128, b) } +func BenchmarkAgentRegistration256(b *testing.B) { benchmarkAgentRegistration(256, b) } + +func BenchmarkAgentLookup2(b *testing.B) { benchmarkAgentLookup(2, b) } +func BenchmarkAgentLookup8(b *testing.B) { benchmarkAgentLookup(8, b) } +func BenchmarkAgentLookup32(b *testing.B) { benchmarkAgentLookup(32, b) } +func BenchmarkAgentLookup128(b *testing.B) { benchmarkAgentLookup(128, b) } +func BenchmarkAgentLookup256(b *testing.B) { benchmarkAgentLookup(256, b) } + +func BenchmarkPeerJoin2(b *testing.B) { benchmarkPeerJoin(2, b) } +func BenchmarkPeerJoin8(b *testing.B) { benchmarkPeerJoin(8, b) } +func BenchmarkPeerJoin32(b *testing.B) { benchmarkPeerJoin(32, b) } +func BenchmarkPeerJoin128(b *testing.B) { benchmarkPeerJoin(128, b) } +func BenchmarkPeerJoin256(b *testing.B) { benchmarkPeerJoin(256, b) } + +func BenchmarkPeerEcho2(b *testing.B) { benchmarkPeerEcho(2, b) } +func BenchmarkPeerEcho8(b *testing.B) { benchmarkPeerEcho(8, b) } +func BenchmarkPeerEcho32(b *testing.B) { benchmarkPeerEcho(32, b) } +func BenchmarkPeerEcho128(b *testing.B) { benchmarkPeerEcho(128, b) } +func BenchmarkPeerEcho256(b *testing.B) { benchmarkPeerEcho(256, b) } diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go index 32f006ffb9..63da0697f7 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/dhtpeer.go @@ -289,6 +289,11 @@ func (dhtPeer *DHTPeer) getLoggers() (func(error) *zerolog.Event, func() *zerolo return lerror, lwarn, linfo, ldebug } +// SetLogLevel set utils logger level +func (dhtPeer *DHTPeer) SetLogLevel(lvl zerolog.Level) { + dhtPeer.logger = dhtPeer.logger.Level(lvl) +} + // Close stops the DHTPeer func (dhtPeer *DHTPeer) Close() []error { var err error diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go index 6a5d89577a..9943fcc945 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go @@ -24,6 +24,7 @@ import ( "fmt" "github.com/multiformats/go-multiaddr" + "github.com/rs/zerolog" utils "libp2p_node/utils" ) @@ -110,3 +111,12 @@ func EnableRelayService() Option { } } + +// LoggingLevel for dhtpeer.New +func LoggingLevel(lvl zerolog.Level) Option { + return func(dhtPeer *DHTPeer) error { + dhtPeer.logger = dhtPeer.logger.Level(lvl) + return nil + } + +} diff --git a/packages/fetchai/connections/p2p_libp2p/utils/utils.go b/packages/fetchai/connections/p2p_libp2p/utils/utils.go index b2f98dacef..7488bd8d31 100644 --- a/packages/fetchai/connections/p2p_libp2p/utils/utils.go +++ b/packages/fetchai/connections/p2p_libp2p/utils/utils.go @@ -50,9 +50,14 @@ import ( "libp2p_node/aea" ) -var LoggerGlobalLevel zerolog.Level = zerolog.DebugLevel +var loggerGlobalLevel zerolog.Level = zerolog.DebugLevel var logger zerolog.Logger = NewDefaultLogger() +// SetLoggerLevel set utils logger level +func SetLoggerLevel(lvl zerolog.Level) { + logger.Level(lvl) +} + /* Logging */ @@ -70,7 +75,7 @@ func newConsoleLogger() zerolog.Logger { func NewDefaultLogger() zerolog.Logger { return newConsoleLogger(). With().Timestamp(). - Logger().Level(LoggerGlobalLevel) + Logger().Level(loggerGlobalLevel) } // NewDefaultLoggerWithFields zerolog console writer @@ -80,7 +85,7 @@ func NewDefaultLoggerWithFields(fields map[string]string) zerolog.Logger { for key, val := range fields { logger = logger.Str(key, val) } - return logger.Logger().Level(LoggerGlobalLevel) + return logger.Logger().Level(loggerGlobalLevel) } diff --git a/packages/hashes.csv b/packages/hashes.csv index ca5546477e..f3ae7f135b 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -25,7 +25,7 @@ fetchai/connections/http_server,QmT6JV2sB1rv7XZgx1bEpMjfQJAtpq775D2n8yvzKzSXYK fetchai/connections/ledger,QmPwbSbzK66j147Bjjxaqp3jRAR2ui59zthqFAqB5i7Uxy fetchai/connections/local,QmNXMDuB7vfGrhv2Q4R8REDicSUgXfVPd7x1tAP3847jsr fetchai/connections/oef,QmZ83PNJ8BfEii7EBrw4WPguEZXt3ZSXuUJDbx4Ehem8Zw -fetchai/connections/p2p_libp2p,QmW9jyBeqJX5eitWq7F5o2FWseNzW8SGLrcuhE91Dw6Q9U +fetchai/connections/p2p_libp2p,QmR2SGKjxK27WtoLD1irCUVNdjnPCAxfCj178m96AuFBaw fetchai/connections/p2p_libp2p_client,Qmbi1hU4hNeRms1BxYzAhLJMr3uPyr7uLnK3BAy2jozdYH fetchai/connections/p2p_stub,QmecGYtXsb7HA2dSWrw2ARNTPFqZsKXAbVroBo57cdUQSG fetchai/connections/scaffold,QmNUta43nLexAHaXLgmLQYEjntLXSV6MLNvc6Q2CTx7eBS From 4e8d7b684638056b59f58461c842004b3ebe223d Mon Sep 17 00:00:00 2001 From: Lokman Rahmani Date: Mon, 12 Oct 2020 09:47:59 +0100 Subject: [PATCH 035/155] Address golang ci --- .../connections/p2p_libp2p/connection.yaml | 2 +- .../p2p_libp2p/dht/dhtpeer/benchmarks_test.go | 16 ++++++++++++++-- packages/hashes.csv | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/fetchai/connections/p2p_libp2p/connection.yaml b/packages/fetchai/connections/p2p_libp2p/connection.yaml index 45a0090225..2e75fa043e 100644 --- a/packages/fetchai/connections/p2p_libp2p/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p/connection.yaml @@ -21,7 +21,7 @@ fingerprint: dht/dhtclient/options.go: QmPorj38wNrxGrzsbFe5wwLmiHzxbTJ2VsgvSd8tLDYS8s dht/dhtnode/dhtnode.go: QmbyhgbCSAbQ1QsDw7FM7Nt5sZcvhbupA1jv5faxutbV7N dht/dhtnode/streams.go: Qmc2JcyiU4wHsgDj6aUunMAp4c5yMzo2ixeqRZHSW5PVwo - dht/dhtpeer/benchmarks_test.go: QmVhWzMcvNvAYwdd7bUabymCidZR1SBqbqR1qP6QHrpXv5 + dht/dhtpeer/benchmarks_test.go: QmdeXy7w3SguH4LBFi2SmZWDyhiyVFATQeaoVF16k1o83v dht/dhtpeer/dhtpeer.go: QmV4qpQXUV3e6hsgpxDWBDqKWHDJeTZMuHzrkGciZTBrZT dht/dhtpeer/dhtpeer_test.go: QmeWksk2g4hmQPNUeF9SbdAdmMmAL2RhkHLcNHrFcBeGby dht/dhtpeer/options.go: QmbZkL4x9N3WwMxibXR9gkcdanskRazXaq4LNXf1GwPao9 diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go index 933312ec51..3a89a39687 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go @@ -63,6 +63,9 @@ func acceptAndEcho(server net.Listener) { return } err = utils.WriteBytesConn(conn, buf) + if err != nil { + return + } } }() @@ -83,6 +86,9 @@ func sendAndReceive(conn net.Conn, buf []byte, b *testing.B) { b.Fatal(err.Error()) } _, err = utils.ReadBytesConn(conn) + if err != nil { + b.Fatal(err.Error()) + } } func connectAndSend(buf []byte, b *testing.B) { @@ -259,7 +265,10 @@ func benchmarkAgentRegistration(npeers uint16, b *testing.B) { for i := 0; i < b.N; i++ { b.ResetTimer() - peer.registerAgentAddress(addrs[len(addrs)-1-i%len(addrs)]) + err = peer.registerAgentAddress(addrs[len(addrs)-1-i%len(addrs)]) + if err != nil { + b.Fail() + } } } @@ -280,7 +289,10 @@ func benchmarkAgentLookup(npeers uint16, b *testing.B) { for i := 0; i < b.N; i++ { b.ResetTimer() - peer.lookupAddressDHT(addrs[len(peers)-1-i%len(peers)]) + _, err = peer.lookupAddressDHT(addrs[len(peers)-1-i%len(peers)]) + if err != nil { + b.Fail() + } } } diff --git a/packages/hashes.csv b/packages/hashes.csv index f3ae7f135b..7c87b2d03b 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -25,7 +25,7 @@ fetchai/connections/http_server,QmT6JV2sB1rv7XZgx1bEpMjfQJAtpq775D2n8yvzKzSXYK fetchai/connections/ledger,QmPwbSbzK66j147Bjjxaqp3jRAR2ui59zthqFAqB5i7Uxy fetchai/connections/local,QmNXMDuB7vfGrhv2Q4R8REDicSUgXfVPd7x1tAP3847jsr fetchai/connections/oef,QmZ83PNJ8BfEii7EBrw4WPguEZXt3ZSXuUJDbx4Ehem8Zw -fetchai/connections/p2p_libp2p,QmR2SGKjxK27WtoLD1irCUVNdjnPCAxfCj178m96AuFBaw +fetchai/connections/p2p_libp2p,QmNbAnW4CjAmcqrLWNWQwKmbdateXSggJmqhGevVmbGvaV fetchai/connections/p2p_libp2p_client,Qmbi1hU4hNeRms1BxYzAhLJMr3uPyr7uLnK3BAy2jozdYH fetchai/connections/p2p_stub,QmecGYtXsb7HA2dSWrw2ARNTPFqZsKXAbVroBo57cdUQSG fetchai/connections/scaffold,QmNUta43nLexAHaXLgmLQYEjntLXSV6MLNvc6Q2CTx7eBS From 1e458f9b0b8c03942ef779e5c566a42312d9c28c Mon Sep 17 00:00:00 2001 From: Lokman Rahmani Date: Thu, 15 Oct 2020 09:46:29 +0100 Subject: [PATCH 036/155] wip --- .../connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go | 4 ++-- .../fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go | 1 + packages/fetchai/connections/p2p_libp2p/utils/utils.go | 8 ++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go index 3a89a39687..8d2a723665 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/benchmarks_test.go @@ -40,8 +40,8 @@ import ( */ -var keysFilePath = "/path/to/file/benchmark_keys.txt" -var addrsFilePath = "/path/to/file/benchmark_addrs.txt" +var keysFilePath = "/home/lokman/dev/aea/agents-aea/benchmark_keys.txt" +var addrsFilePath = "/home/lokman/dev/aea/agents-aea/benchmark_addrs.txt" var tcpUri = "localhost:12345" /* ********************************** diff --git a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go index 9943fcc945..d023314f05 100644 --- a/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go +++ b/packages/fetchai/connections/p2p_libp2p/dht/dhtpeer/options.go @@ -116,6 +116,7 @@ func EnableRelayService() Option { func LoggingLevel(lvl zerolog.Level) Option { return func(dhtPeer *DHTPeer) error { dhtPeer.logger = dhtPeer.logger.Level(lvl) + zerolog.SetGlobalLevel(lvl) return nil } diff --git a/packages/fetchai/connections/p2p_libp2p/utils/utils.go b/packages/fetchai/connections/p2p_libp2p/utils/utils.go index 7488bd8d31..469e6bca4e 100644 --- a/packages/fetchai/connections/p2p_libp2p/utils/utils.go +++ b/packages/fetchai/connections/p2p_libp2p/utils/utils.go @@ -55,7 +55,7 @@ var logger zerolog.Logger = NewDefaultLogger() // SetLoggerLevel set utils logger level func SetLoggerLevel(lvl zerolog.Level) { - logger.Level(lvl) + //logger.Level(lvl) } /* @@ -67,7 +67,7 @@ func newConsoleLogger() zerolog.Logger { return zerolog.New(zerolog.ConsoleWriter{ Out: os.Stdout, NoColor: false, - TimeFormat: "15:04:05.000", + TimeFormat: time.RFC3339Nano, }) } @@ -75,7 +75,7 @@ func newConsoleLogger() zerolog.Logger { func NewDefaultLogger() zerolog.Logger { return newConsoleLogger(). With().Timestamp(). - Logger().Level(loggerGlobalLevel) + Logger() //.Level(loggerGlobalLevel) } // NewDefaultLoggerWithFields zerolog console writer @@ -85,7 +85,7 @@ func NewDefaultLoggerWithFields(fields map[string]string) zerolog.Logger { for key, val := range fields { logger = logger.Str(key, val) } - return logger.Logger().Level(loggerGlobalLevel) + return logger.Logger().Level(zerolog.Disabled) //.Level(loggerGlobalLevel) } From 253f657f07c1c4705f91d18fdfbdce498cbef53d Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 11:30:15 +0100 Subject: [PATCH 037/155] add public ids to all skills, remove hard coded ids --- aea/aea.py | 4 +- aea/aea_builder.py | 7 ++- aea/cli/add.py | 8 +-- aea/cli/utils/package_utils.py | 16 ++--- aea/configurations/constants.py | 3 +- aea/contracts/base.py | 1 + aea/contracts/scaffold/contract.py | 3 + aea/contracts/scaffold/contract.yaml | 2 +- aea/skills/error/__init__.py | 5 ++ aea/skills/error/skill.yaml | 2 +- aea/skills/scaffold/__init__.py | 5 ++ aea/skills/scaffold/skill.yaml | 2 +- .../fetchai/connections/local/connection.py | 4 +- .../fetchai/connections/local/connection.yaml | 2 +- .../fetchai/connections/oef/connection.py | 2 +- .../fetchai/connections/oef/connection.yaml | 2 +- .../fetchai/connections/soef/connection.py | 2 +- .../fetchai/connections/soef/connection.yaml | 2 +- .../fetchai/contracts/erc1155/contract.py | 2 + .../fetchai/contracts/erc1155/contract.yaml | 2 +- .../fetchai/skills/aries_alice/__init__.py | 5 ++ .../fetchai/skills/aries_alice/skill.yaml | 2 +- .../fetchai/skills/aries_faber/__init__.py | 5 ++ .../fetchai/skills/aries_faber/skill.yaml | 2 +- .../fetchai/skills/carpark_client/__init__.py | 5 ++ .../fetchai/skills/carpark_client/skill.yaml | 2 +- .../skills/carpark_detection/__init__.py | 5 ++ .../skills/carpark_detection/skill.yaml | 2 +- packages/fetchai/skills/echo/__init__.py | 5 ++ packages/fetchai/skills/echo/skill.yaml | 2 +- .../fetchai/skills/erc1155_client/__init__.py | 5 ++ .../fetchai/skills/erc1155_client/handlers.py | 2 +- .../fetchai/skills/erc1155_client/skill.yaml | 6 +- .../fetchai/skills/erc1155_client/strategy.py | 8 +++ .../fetchai/skills/erc1155_deploy/__init__.py | 5 ++ .../skills/erc1155_deploy/behaviours.py | 6 +- .../fetchai/skills/erc1155_deploy/handlers.py | 2 +- .../fetchai/skills/erc1155_deploy/skill.yaml | 8 +-- .../fetchai/skills/erc1155_deploy/strategy.py | 7 ++- .../fetchai/skills/generic_buyer/__init__.py | 5 ++ .../fetchai/skills/generic_buyer/skill.yaml | 2 +- .../fetchai/skills/generic_seller/__init__.py | 5 ++ .../fetchai/skills/generic_seller/skill.yaml | 2 +- packages/fetchai/skills/gym/__init__.py | 5 ++ packages/fetchai/skills/gym/skill.yaml | 2 +- packages/fetchai/skills/http_echo/__init__.py | 5 ++ packages/fetchai/skills/http_echo/skill.yaml | 2 +- .../skills/ml_data_provider/__init__.py | 5 ++ .../skills/ml_data_provider/skill.yaml | 2 +- packages/fetchai/skills/ml_train/__init__.py | 5 ++ packages/fetchai/skills/ml_train/skill.yaml | 2 +- .../simple_service_registration/__init__.py | 5 ++ .../simple_service_registration/skill.yaml | 2 +- .../fetchai/skills/tac_control/__init__.py | 5 ++ .../fetchai/skills/tac_control/parameters.py | 7 +++ .../fetchai/skills/tac_control/skill.yaml | 4 +- .../skills/tac_control_contract/__init__.py | 5 ++ .../skills/tac_control_contract/behaviours.py | 6 +- .../skills/tac_control_contract/skill.yaml | 4 +- .../skills/tac_negotiation/__init__.py | 5 ++ .../fetchai/skills/tac_negotiation/skill.yaml | 4 +- .../skills/tac_negotiation/strategy.py | 5 +- .../skills/tac_participation/__init__.py | 5 ++ .../skills/tac_participation/skill.yaml | 2 +- .../fetchai/skills/thermometer/__init__.py | 5 ++ .../fetchai/skills/thermometer/skill.yaml | 2 +- .../skills/thermometer_client/__init__.py | 5 ++ .../skills/thermometer_client/skill.yaml | 2 +- .../fetchai/skills/weather_client/__init__.py | 5 ++ .../fetchai/skills/weather_client/skill.yaml | 2 +- .../skills/weather_station/__init__.py | 5 ++ .../fetchai/skills/weather_station/skill.yaml | 2 +- packages/hashes.csv | 58 +++++++++---------- tests/test_cli/test_utils/test_utils.py | 8 +-- 74 files changed, 252 insertions(+), 103 deletions(-) diff --git a/aea/aea.py b/aea/aea.py index 529e86f2ab..ca33a17b2c 100644 --- a/aea/aea.py +++ b/aea/aea.py @@ -38,7 +38,7 @@ from aea.agent import Agent from aea.agent_loop import AsyncAgentLoop, BaseAgentLoop, SyncAgentLoop from aea.configurations.base import PublicId -from aea.configurations.constants import DEFAULT_SKILL +from aea.configurations.constants import DEFAULT_SEARCH_SERVICE_ADDRESS, DEFAULT_SKILL from aea.connections.base import Connection from aea.context.base import AgentContext from aea.crypto.wallet import Wallet @@ -88,7 +88,7 @@ def __init__( default_connection: Optional[PublicId] = None, default_routing: Optional[Dict[PublicId, PublicId]] = None, connection_ids: Optional[Collection[PublicId]] = None, - search_service_address: str = "fetchai/soef:*", + search_service_address: str = DEFAULT_SEARCH_SERVICE_ADDRESS, **kwargs, ) -> None: """ diff --git a/aea/aea_builder.py b/aea/aea_builder.py index 40ab4c20fe..6ca48aba47 100644 --- a/aea/aea_builder.py +++ b/aea/aea_builder.py @@ -55,8 +55,11 @@ DEFAULT_CONNECTION, DEFAULT_LEDGER, DEFAULT_PROTOCOL, - DEFAULT_SKILL, ) +from aea.configurations.constants import ( + DEFAULT_SEARCH_SERVICE_ADDRESS as _DEFAULT_SEARCH_SERVICE_ADDRESS, +) +from aea.configurations.constants import DEFAULT_SKILL from aea.configurations.loader import ConfigLoader, load_component_configuration from aea.configurations.pypi import is_satisfiable, merge_dependencies from aea.crypto.helpers import verify_or_create_private_keys @@ -286,7 +289,7 @@ class AEABuilder(WithLogger): # pylint: disable=too-many-public-methods DEFAULT_CONNECTION_EXCEPTION_POLICY = ExceptionPolicyEnum.propagate DEFAULT_LOOP_MODE = "async" DEFAULT_RUNTIME_MODE = "threaded" - DEFAULT_SEARCH_SERVICE_ADDRESS = "fetchai/soef:*" + DEFAULT_SEARCH_SERVICE_ADDRESS = _DEFAULT_SEARCH_SERVICE_ADDRESS loader = ConfigLoader.from_configuration_type(PackageType.AGENT) diff --git a/aea/cli/add.py b/aea/cli/add.py index 9cd30a0861..38f5b997c5 100644 --- a/aea/cli/add.py +++ b/aea/cli/add.py @@ -34,9 +34,9 @@ find_item_locally, get_item_id_present, get_package_path, + is_distributed_item, is_fingerprint_correct, is_item_present, - is_local_item, register_item, ) from aea.configurations.base import PublicId @@ -115,11 +115,11 @@ def add_item(ctx: Context, item_type: str, item_public_id: PublicId) -> None: ctx.clean_paths.append(dest_path) - is_distributed_item = is_local_item(item_public_id) - if is_local and is_distributed_item: + is_distributed = is_distributed_item(item_public_id) + if is_local and is_distributed: source_path = find_item_in_distribution(ctx, item_type, item_public_id) package_path = copy_package_directory(source_path, dest_path) - elif is_local and not is_distributed_item: + elif is_local and not is_distributed: source_path, _ = find_item_locally(ctx, item_type, item_public_id) package_path = copy_package_directory(source_path, dest_path) else: diff --git a/aea/cli/utils/package_utils.py b/aea/cli/utils/package_utils.py index b9726e5246..050b8acb83 100644 --- a/aea/cli/utils/package_utils.py +++ b/aea/cli/utils/package_utils.py @@ -43,7 +43,7 @@ from aea.configurations.constants import ( DEFAULT_CONNECTION, DEFAULT_SKILL, - LOCAL_PROTOCOLS, + DISTRIBUTED_PROTOCOLS, ) from aea.configurations.loader import ConfigLoader from aea.crypto.helpers import verify_or_create_private_keys @@ -507,21 +507,21 @@ def get_items(agent_config: AgentConfig, item_type: str) -> Set[PublicId]: return getattr(agent_config, item_type_plural) -def is_local_item(item_public_id: PublicId) -> bool: +def is_distributed_item(item_public_id: PublicId) -> bool: """ - Check whether the item public id correspond to a local package. + Check whether the item public id correspond to a package in the distribution. If the provided item has version 'latest', only the prefixes are compared. - Otherwise, the function will try to match the exact version occurrence among the local packages. + Otherwise, the function will try to match the exact version occurrence among the distributed packages. """ - local_packages: List[PublicId] = [ + distributed_packages: List[PublicId] = [ DEFAULT_CONNECTION, - *LOCAL_PROTOCOLS, + *DISTRIBUTED_PROTOCOLS, DEFAULT_SKILL, ] if item_public_id.package_version.is_latest: - return any(item_public_id.same_prefix(other) for other in local_packages) - return item_public_id in local_packages + return any(item_public_id.same_prefix(other) for other in distributed_packages) + return item_public_id in distributed_packages def try_get_balance( # pylint: disable=unused-argument diff --git a/aea/configurations/constants.py b/aea/configurations/constants.py index 435a026a02..3a8ebd2b30 100644 --- a/aea/configurations/constants.py +++ b/aea/configurations/constants.py @@ -35,4 +35,5 @@ DEFAULT_LICENSE = DL SIGNING_PROTOCOL = PublicId.from_str("fetchai/signing:0.5.0") STATE_UPDATE_PROTOCOL = PublicId.from_str("fetchai/state_update:0.5.0") -LOCAL_PROTOCOLS = [DEFAULT_PROTOCOL, SIGNING_PROTOCOL, STATE_UPDATE_PROTOCOL] +DISTRIBUTED_PROTOCOLS = [DEFAULT_PROTOCOL, SIGNING_PROTOCOL, STATE_UPDATE_PROTOCOL] +DEFAULT_SEARCH_SERVICE_ADDRESS = "fetchai/soef:*" diff --git a/aea/contracts/base.py b/aea/contracts/base.py index df55fb103c..c1e7b2d5f0 100644 --- a/aea/contracts/base.py +++ b/aea/contracts/base.py @@ -40,6 +40,7 @@ class Contract(Component): """Abstract definition of a contract.""" + contract_id = None # type: ContractId contract_interface: Any = None def __init__(self, contract_config: ContractConfig, **kwargs): diff --git a/aea/contracts/scaffold/contract.py b/aea/contracts/scaffold/contract.py index a472786e28..e3da5378aa 100644 --- a/aea/contracts/scaffold/contract.py +++ b/aea/contracts/scaffold/contract.py @@ -21,6 +21,7 @@ from typing import Any, Dict +from aea.configurations.base import PublicId from aea.contracts.base import Contract from aea.crypto.base import LedgerApi @@ -28,6 +29,8 @@ class MyScaffoldContract(Contract): """The scaffold contract class for a smart contract.""" + contract_id = PublicId.from_str("fetchai/scaffold:0.1.0") + @classmethod def get_raw_transaction( cls, ledger_api: LedgerApi, contract_address: str, **kwargs diff --git a/aea/contracts/scaffold/contract.yaml b/aea/contracts/scaffold/contract.yaml index 75d77014fe..d758cfd2da 100644 --- a/aea/contracts/scaffold/contract.yaml +++ b/aea/contracts/scaffold/contract.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: __init__.py: QmPBwWhEg3wcH1q9612srZYAYdANVdWLDFWKs7TviZmVj6 - contract.py: QmZ2b8pRckXaBpeSdw1nnEqy3dT4Gro7aijpYU9QKFTJdk + contract.py: QmQrasJcMjhnVS26sXNxPTNH7yBZhRm3ZcNSguTFLV9xaS fingerprint_ignore_patterns: [] class_name: MyScaffoldContract contract_interface_paths: {} diff --git a/aea/skills/error/__init__.py b/aea/skills/error/__init__.py index 96c80ac32c..23855eede3 100644 --- a/aea/skills/error/__init__.py +++ b/aea/skills/error/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the error skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/error:0.7.0") diff --git a/aea/skills/error/skill.yaml b/aea/skills/error/skill.yaml index 92474217db..2cae39beee 100644 --- a/aea/skills/error/skill.yaml +++ b/aea/skills/error/skill.yaml @@ -6,7 +6,7 @@ description: The error skill implements basic error handling required by all AEA license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: - __init__.py: QmYm7UaWVmRy2i35MBKZRnBrpWBJswLdEH6EY1QQKXdQES + __init__.py: QmPGDeDxEZR4Fk4gD5a9a8Pm54NVQepTaZaVtDEuSMRYeN handlers.py: QmU5PviCqLGX7h9nSAAjcSMs1xsLc8TckSu4KcnbLPCaBG fingerprint_ignore_patterns: [] contracts: [] diff --git a/aea/skills/scaffold/__init__.py b/aea/skills/scaffold/__init__.py index 81d567366d..3ceb7ee7ef 100644 --- a/aea/skills/scaffold/__init__.py +++ b/aea/skills/scaffold/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the default skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/scaffold:0.1.0") diff --git a/aea/skills/scaffold/skill.yaml b/aea/skills/scaffold/skill.yaml index 6fcdeb71ad..978e024636 100644 --- a/aea/skills/scaffold/skill.yaml +++ b/aea/skills/scaffold/skill.yaml @@ -6,7 +6,7 @@ description: The scaffold skill is a scaffold for your own skill implementation. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: - __init__.py: QmNkZAetyctaZCUf6ACxP5onGWsSxu2hjSNoFmJ3ta6Lta + __init__.py: QmYRssFqDqb3uWDvfoXy93avisjKRx2yf9SbAQXnkRj1QB behaviours.py: QmNgDDAmBzWBeBF7e5gUCny38kdqVVfpvHGaAZVZcMtm9Q handlers.py: QmUFLmnyph4sstd5vxq4Q7up8PVbVMctiiZi8EZMsK1Kj6 my_model.py: QmPaZ6G37Juk63mJj88nParaEp71XyURts8AmmX1axs24V diff --git a/packages/fetchai/connections/local/connection.py b/packages/fetchai/connections/local/connection.py index aec601bbf1..cb9a007cf4 100644 --- a/packages/fetchai/connections/local/connection.py +++ b/packages/fetchai/connections/local/connection.py @@ -26,7 +26,7 @@ from typing import Dict, List, Optional, Tuple, Type, cast from aea.common import Address -from aea.configurations.base import ProtocolId, PublicId +from aea.configurations.base import PublicId from aea.connections.base import Connection, ConnectionStates from aea.exceptions import enforce from aea.helpers.search.models import Description @@ -222,7 +222,7 @@ async def _handle_envelope(self, envelope: Envelope) -> None: :param envelope: the envelope :return: None """ - if envelope.protocol_id == ProtocolId.from_str("fetchai/oef_search:0.8.0"): + if envelope.protocol_id == OefSearchMessage.protocol_id: await self._handle_oef_message(envelope) else: OEFLocalConnection._ensure_valid_envelope_for_external_comms( # pylint: disable=protected-access diff --git a/packages/fetchai/connections/local/connection.yaml b/packages/fetchai/connections/local/connection.yaml index bff14c1dbe..53bb572da7 100644 --- a/packages/fetchai/connections/local/connection.yaml +++ b/packages/fetchai/connections/local/connection.yaml @@ -8,7 +8,7 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmbK7MtyAVqh2LmSh9TY6yBZqfWaAXURP4rQGATyP2hTKC __init__.py: QmeeoX5E38Ecrb1rLdeFyyxReHLrcJoETnBcPbcNWVbiKG - connection.py: QmbhmhzTKpHAd6Ea5yiueuboihMwdJ2xH1b1yYUj97Cfxd + connection.py: QmZfKAu1j8ZG56bXPUDmtvK4eCGFeLtZsx1x4Tj3dNWuQs fingerprint_ignore_patterns: [] protocols: - fetchai/oef_search:0.8.0 diff --git a/packages/fetchai/connections/oef/connection.py b/packages/fetchai/connections/oef/connection.py index ed7f050cd4..821eb01819 100644 --- a/packages/fetchai/connections/oef/connection.py +++ b/packages/fetchai/connections/oef/connection.py @@ -413,7 +413,7 @@ def send(self, envelope: Envelope) -> None: ) raise ValueError("Cannot send message.") - if envelope.protocol_id == PublicId.from_str("fetchai/oef_search:0.8.0"): + if envelope.protocol_id == OefSearchMessage.protocol_id: self.send_oef_message(envelope) else: self.send_default_message(envelope) diff --git a/packages/fetchai/connections/oef/connection.yaml b/packages/fetchai/connections/oef/connection.yaml index 022e06b0f3..6f06571364 100644 --- a/packages/fetchai/connections/oef/connection.yaml +++ b/packages/fetchai/connections/oef/connection.yaml @@ -9,7 +9,7 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmW6uQWyRnVh6nzz5Sdr6gk2ySShApPDC5GY73KgGPmEJt __init__.py: QmUAen8tmoBHuCerjA3FSGKJRLG6JYyUS3chuWzPxKYzez - connection.py: QmTLTfWnd4WpJprX9JUu5KWztJ4nqfA847r3AsDR7w2ZEi + connection.py: QmUNtBiXaVD2VJy4nfMYDfNxrrwQiDktJxJyRnNCvtLoA7 object_translator.py: QmZNGxNywRZJTfcd2GYzbxkrXqUFRFEs8wnL3NeBW78poe fingerprint_ignore_patterns: [] protocols: diff --git a/packages/fetchai/connections/soef/connection.py b/packages/fetchai/connections/soef/connection.py index e8d0069078..5150fc6321 100644 --- a/packages/fetchai/connections/soef/connection.py +++ b/packages/fetchai/connections/soef/connection.py @@ -1114,7 +1114,7 @@ def __init__(self, **kwargs): if kwargs.get("configuration") is None: # pragma: nocover kwargs["excluded_protocols"] = kwargs.get("excluded_protocols") or [] kwargs["restricted_to_protocols"] = kwargs.get("excluded_protocols") or [ - PublicId.from_str("fetchai/oef_search:0.8.0") + OefSearchMessage.protocol_id ] super().__init__(**kwargs) diff --git a/packages/fetchai/connections/soef/connection.yaml b/packages/fetchai/connections/soef/connection.yaml index 26db2bca90..a39e3841bc 100644 --- a/packages/fetchai/connections/soef/connection.yaml +++ b/packages/fetchai/connections/soef/connection.yaml @@ -8,7 +8,7 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmT6qSQHjBR8vsau6STwrNe7FjfrMt8a4dY5fkEowBYa4i __init__.py: Qmd5VBGFJHXFe1H45XoUh5mMSYBwvLSViJuGFeMgbPdQts - connection.py: QmcMhHBfiGWRubtM68mvBMnHbnfXWRsuKSmEW4N5M6FNUa + connection.py: QmV52yYKUpR7KNCpvSVdQExSKx6Mf3ZV6dVw2nUB4QoH1Z fingerprint_ignore_patterns: [] protocols: - fetchai/oef_search:0.8.0 diff --git a/packages/fetchai/contracts/erc1155/contract.py b/packages/fetchai/contracts/erc1155/contract.py index a963fae707..0460513266 100644 --- a/packages/fetchai/contracts/erc1155/contract.py +++ b/packages/fetchai/contracts/erc1155/contract.py @@ -44,6 +44,8 @@ class ERC1155Contract(Contract): """The ERC1155 contract class which acts as a bridge between AEA framework and ERC1155 ABI.""" + contract_id = PUBLIC_ID + @classmethod def generate_token_ids( cls, token_type: int, nb_tokens: int, starting_index: int = 0 diff --git a/packages/fetchai/contracts/erc1155/contract.yaml b/packages/fetchai/contracts/erc1155/contract.yaml index c9f86588a9..9b267a27c6 100644 --- a/packages/fetchai/contracts/erc1155/contract.yaml +++ b/packages/fetchai/contracts/erc1155/contract.yaml @@ -10,7 +10,7 @@ fingerprint: build/Migrations.json: QmfFYYWoq1L1Ni6YPBWWoRPvCZKBLZ7qzN3UDX537mCeuE build/erc1155.json: Qma5n7au2NDCg1nLwYfYnmFNwWChFuXtu65w5DV7wAZRvw build/erc1155.wasm: Qmc9gthbdwRSywinTHKjRVQdFzrKTxUuLDx2ryNfQp1xqf - contract.py: QmfYL2igohC264LdKDHSXwTam3nME5GWDbErVjSMN2cgif + contract.py: Qmf9MjM4ANvNa1ateVeuMADERshzD1Wexpfmyt7qX2Y8f2 contracts/Migrations.sol: QmbW34mYrj3uLteyHf3S46pnp9bnwovtCXHbdBHfzMkSZx contracts/erc1155.vy: QmXwob8G1uX7fDvtuuKW139LALWtQmGw2vvaTRBVAWRxTx migrations/1_initial_migration.js: QmcxaWKQ2yPkQBmnpXmcuxPZQUMuUudmPmX3We8Z9vtAf7 diff --git a/packages/fetchai/skills/aries_alice/__init__.py b/packages/fetchai/skills/aries_alice/__init__.py index 6e2baadb91..e9edd951b4 100644 --- a/packages/fetchai/skills/aries_alice/__init__.py +++ b/packages/fetchai/skills/aries_alice/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the aries_alice skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/aries_alice:0.9.0") diff --git a/packages/fetchai/skills/aries_alice/skill.yaml b/packages/fetchai/skills/aries_alice/skill.yaml index 90afb606d5..87379d0192 100644 --- a/packages/fetchai/skills/aries_alice/skill.yaml +++ b/packages/fetchai/skills/aries_alice/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmfS1ezD77No8WQkvrkPs4oSXHFbULRxatGzRhMbSMntSx - __init__.py: Qma8qSTU34ADKWskBwQKQLGNpe3xDKNgjNQ6Q4MxUnKa3Q + __init__.py: QmcP4spDi6uMHASQD3nEMijNXfftvDyC4pGSvzjFsGAjtf behaviours.py: QmTdJbrP1N3W1M6CLDyPFc6erfcrhnbRJtDNN6ZuY9eRUt dialogues.py: QmbCkYZ9mQK6az3qWVMuYmpy5bapq2szYigUbVzE2GgiJi handlers.py: QmTtqM5oWBEAZcHdTuwuPtbiZZGWontMNEtmDxcccS2u2Y diff --git a/packages/fetchai/skills/aries_faber/__init__.py b/packages/fetchai/skills/aries_faber/__init__.py index 9113cb0cf5..2791c94a2e 100644 --- a/packages/fetchai/skills/aries_faber/__init__.py +++ b/packages/fetchai/skills/aries_faber/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the aries_faber skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/aries_faber:0.8.0") diff --git a/packages/fetchai/skills/aries_faber/skill.yaml b/packages/fetchai/skills/aries_faber/skill.yaml index a0ac4d52ed..d012e99f16 100644 --- a/packages/fetchai/skills/aries_faber/skill.yaml +++ b/packages/fetchai/skills/aries_faber/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmdkSNCYx5dNGDAAveapQgoyM7Y7iYeQzR7KN2Sso3CJG4 - __init__.py: QmNPVQ6UajvJodqTLWbLvQZkKCfrNn1nYPrQXai3xdj6F7 + __init__.py: QmRB8ZTyM23HnkV5yA81YgqaRvL8uCsSVqGksTt49YUh73 behaviours.py: QmQUmnhHmEFjGp9SvkLqcBrmCe2CSFngzqTHNadqJXQMgw dialogues.py: Qmeynv4h5ArYBJ2wkQurW7VXdDP1VXNbg5GiADkgMPFqj3 handlers.py: QmXpCVgMTLyewXPmXMmPHUpnZhQZ35GFAhZtcpujAd3WZ8 diff --git a/packages/fetchai/skills/carpark_client/__init__.py b/packages/fetchai/skills/carpark_client/__init__.py index 0fbd4aee20..7ccfd568b9 100644 --- a/packages/fetchai/skills/carpark_client/__init__.py +++ b/packages/fetchai/skills/carpark_client/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the carpark client skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/carpark_client:0.13.0") diff --git a/packages/fetchai/skills/carpark_client/skill.yaml b/packages/fetchai/skills/carpark_client/skill.yaml index fbd6b83a4e..2aba660282 100644 --- a/packages/fetchai/skills/carpark_client/skill.yaml +++ b/packages/fetchai/skills/carpark_client/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmeypYUvYR61ZD7qWQmeMnGq3ior9dQ6uuRpAduws65rFG - __init__.py: QmPZ4bRmXpsDKD7ogCJHEMrtm67hpA5aqxvujgfQD1PtMd + __init__.py: QmR2Gxy4BQxWUaAK4mfFXqRn6ji2bvMTbEdA6W9ymbZGu7 behaviours.py: QmXw3wGKAqCT55MRX61g3eN1T2YVY4XC5z9b4Dg7x1Wihc dialogues.py: QmcUgBjxeytE5aAx3VvPyna5EcBuqck9KazG3HygCWjawv handlers.py: QmYx8WzeR2aCg2b2uiR1K2NHLn8DKhzAahLXoFnrXyDoDz diff --git a/packages/fetchai/skills/carpark_detection/__init__.py b/packages/fetchai/skills/carpark_detection/__init__.py index f5a7bc9ec1..adb31378fc 100644 --- a/packages/fetchai/skills/carpark_detection/__init__.py +++ b/packages/fetchai/skills/carpark_detection/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the car park detection skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/carpark_detection:0.13.0") diff --git a/packages/fetchai/skills/carpark_detection/skill.yaml b/packages/fetchai/skills/carpark_detection/skill.yaml index 0080c53ecb..72785b8fb2 100644 --- a/packages/fetchai/skills/carpark_detection/skill.yaml +++ b/packages/fetchai/skills/carpark_detection/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmcwNhv5N8m4ZtWvXY5eMDeL5ciivryDZPtGWXMFfTbYR7 - __init__.py: QmQoECB7dpCDCG3xCnBsoMy6oqgSdu69CzRcAcuZuyapnQ + __init__.py: QmYqCqpsdpPxFkvTZ4npTqCG9FBfhcZZmBE6tRtCTKS9iJ behaviours.py: QmTNboU3YH8DehWnpZmoiDUCncpNmqoSVt1Yp4j7NsgY2S database.py: Qma4Ydj8EQtWr4W9EgUvZs5AkZ5tKHjSgHaxQDfzrPm27N dialogues.py: QmPXfUWDxnHDaHQqsgtVhJ2v9dEgGWLtvEHKFvvFcDXGms diff --git a/packages/fetchai/skills/echo/__init__.py b/packages/fetchai/skills/echo/__init__.py index faa2b86180..3715241ff8 100644 --- a/packages/fetchai/skills/echo/__init__.py +++ b/packages/fetchai/skills/echo/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains an example of skill for an AEA.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/echo:0.9.0") diff --git a/packages/fetchai/skills/echo/skill.yaml b/packages/fetchai/skills/echo/skill.yaml index a2e60c681c..3b0c49c64e 100644 --- a/packages/fetchai/skills/echo/skill.yaml +++ b/packages/fetchai/skills/echo/skill.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: Qmd884WK35W5JuT6i1gXQFspxVPnCpeXv9kqWXnUaUAx4E - __init__.py: QmTf1GCgHxu7qq4HvUNYiBwuGEL1DcsHQuWH7N7TB5TtoC + __init__.py: QmNN9MJRi8UcMHEipvRQaJui2vSfjNRRSHKX7QsGc11zRJ behaviours.py: QmXARXRvJkpzuqnYNhJhv42Sk6J4KzRW2AKvC6FJWLU9JL dialogues.py: QmbfLMqP1aScVV68rEUpenKiWA5KsnT1Zq48jVnk5jFmQ5 handlers.py: QmfD1dbce2WoPF54DNgu9DUNZrHeTucA5LyDoiFr8j5pTx diff --git a/packages/fetchai/skills/erc1155_client/__init__.py b/packages/fetchai/skills/erc1155_client/__init__.py index 04f1c2d3c3..2603ae9b10 100644 --- a/packages/fetchai/skills/erc1155_client/__init__.py +++ b/packages/fetchai/skills/erc1155_client/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the erc-1155 client skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/erc1155_client:0.14.0") diff --git a/packages/fetchai/skills/erc1155_client/handlers.py b/packages/fetchai/skills/erc1155_client/handlers.py index aca31aa5d5..312f600c3c 100644 --- a/packages/fetchai/skills/erc1155_client/handlers.py +++ b/packages/fetchai/skills/erc1155_client/handlers.py @@ -154,7 +154,7 @@ def _handle_propose( counterparty=LEDGER_API_ADDRESS, performative=ContractApiMessage.Performative.GET_RAW_MESSAGE, ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.11.0", + contract_id=strategy.contract_id, contract_address=fipa_msg.proposal.values["contract_address"], callable="get_hash_single", kwargs=ContractApiMessage.Kwargs( diff --git a/packages/fetchai/skills/erc1155_client/skill.yaml b/packages/fetchai/skills/erc1155_client/skill.yaml index 590403c248..02961b9240 100644 --- a/packages/fetchai/skills/erc1155_client/skill.yaml +++ b/packages/fetchai/skills/erc1155_client/skill.yaml @@ -8,11 +8,11 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmZLsx2wJE762rqDqfeqLMg9RBczvALxy3H2U9kfRvgK3s - __init__.py: QmRXXJsv5bfvb7qsyxQtVzXwn6PMLJKkbm6kg4DNkT1NtW + __init__.py: QmcHGjFj9XfbSWJcTfsy4auEX8AtLSy2M1YUCWVi1VRaVX behaviours.py: QmTWQLqGHrZ8zG9cPnpXRjG6xnLUno1oGGw6nR297Rbync dialogues.py: QmPb2odXbXxuY5Ygm9mfCufM2mtMZ23oapsAzsWHC2x2k4 - handlers.py: QmPxNz2wvcYi4wrBawdDMniFtbPqWpbt99mBSJjijuRaTT - strategy.py: QmWm4KWhcqt2i4C8SnyHfDyjVK1HrbyiHTWN4thkfGzcrB + handlers.py: Qmc1yfcjDravS6KL8xrHmpHKNs1xtdoZ6XEPuLurwQmw3s + strategy.py: QmTdapKSrFEZJkpmqrVeVSqF6MyRgNA6NeLhPByoxRF1V9 fingerprint_ignore_patterns: [] contracts: - fetchai/erc1155:0.11.0 diff --git a/packages/fetchai/skills/erc1155_client/strategy.py b/packages/fetchai/skills/erc1155_client/strategy.py index 5904d79c32..9f1316df8f 100644 --- a/packages/fetchai/skills/erc1155_client/strategy.py +++ b/packages/fetchai/skills/erc1155_client/strategy.py @@ -24,6 +24,8 @@ from aea.helpers.search.models import Constraint, ConstraintType, Location, Query from aea.skills.base import Model +from packages.fetchai.contracts.erc1155.contract import PUBLIC_ID as CONTRACT_ID + DEFAULT_LOCATION = {"longitude": 51.5194, "latitude": 0.1270} DEFAULT_SEARCH_QUERY = { @@ -55,12 +57,18 @@ def __init__(self, **kwargs) -> None: self._ledger_id = kwargs.pop("ledger_id", DEFAULT_LEDGER_ID) super().__init__(**kwargs) self.is_searching = True + self._contract_id = str(CONTRACT_ID) @property def ledger_id(self) -> str: """Get the ledger id.""" return self._ledger_id + @property + def contract_id(self) -> str: + """Get the contract id.""" + return self._contract_id + def get_location_and_service_query(self) -> Query: """ Get the location and service query of the agent. diff --git a/packages/fetchai/skills/erc1155_deploy/__init__.py b/packages/fetchai/skills/erc1155_deploy/__init__.py index e65063d299..715cd4c90e 100644 --- a/packages/fetchai/skills/erc1155_deploy/__init__.py +++ b/packages/fetchai/skills/erc1155_deploy/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the erc1155 deploy skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/erc1155_deploy:0.15.0") diff --git a/packages/fetchai/skills/erc1155_deploy/behaviours.py b/packages/fetchai/skills/erc1155_deploy/behaviours.py index 8e95711f01..2d66ddb279 100644 --- a/packages/fetchai/skills/erc1155_deploy/behaviours.py +++ b/packages/fetchai/skills/erc1155_deploy/behaviours.py @@ -131,7 +131,7 @@ def _request_contract_deploy_transaction(self) -> None: counterparty=LEDGER_API_ADDRESS, performative=ContractApiMessage.Performative.GET_DEPLOY_TRANSACTION, ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.11.0", + contract_id=strategy.contract_id, callable="get_deploy_transaction", kwargs=ContractApiMessage.Kwargs( {"deployer_address": self.context.agent_address} @@ -157,7 +157,7 @@ def _request_token_create_transaction(self) -> None: counterparty=LEDGER_API_ADDRESS, performative=ContractApiMessage.Performative.GET_RAW_TRANSACTION, ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.11.0", + contract_id=strategy.contract_id, contract_address=strategy.contract_address, callable="get_create_batch_transaction", kwargs=ContractApiMessage.Kwargs( @@ -187,7 +187,7 @@ def _request_token_mint_transaction(self) -> None: counterparty=LEDGER_API_ADDRESS, performative=ContractApiMessage.Performative.GET_RAW_TRANSACTION, ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.11.0", + contract_id=strategy.contract_id, contract_address=strategy.contract_address, callable="get_mint_batch_transaction", kwargs=ContractApiMessage.Kwargs( diff --git a/packages/fetchai/skills/erc1155_deploy/handlers.py b/packages/fetchai/skills/erc1155_deploy/handlers.py index 8066c226d5..4bcd8bf200 100644 --- a/packages/fetchai/skills/erc1155_deploy/handlers.py +++ b/packages/fetchai/skills/erc1155_deploy/handlers.py @@ -172,7 +172,7 @@ def _handle_accept_w_inform( counterparty=LEDGER_API_ADDRESS, performative=ContractApiMessage.Performative.GET_RAW_TRANSACTION, ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.11.0", + contract_id=strategy.contract_id, contract_address=strategy.contract_address, callable="get_atomic_swap_single_transaction", kwargs=ContractApiMessage.Kwargs( diff --git a/packages/fetchai/skills/erc1155_deploy/skill.yaml b/packages/fetchai/skills/erc1155_deploy/skill.yaml index dc799d7de1..fdf80179f7 100644 --- a/packages/fetchai/skills/erc1155_deploy/skill.yaml +++ b/packages/fetchai/skills/erc1155_deploy/skill.yaml @@ -8,11 +8,11 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmZYqboojbibXnPAXqDifnHkVrmGjLJV3HBCJWeRzRpKMh - __init__.py: Qmbm3ZtGpfdvvzqykfRqbaReAK9a16mcyK7qweSfeN5pq1 - behaviours.py: Qmf2wxPHGU7PHwSnf3B9v7nK49u1at3JMkeGQiKkhP2fsD + __init__.py: QmaTpFZmGT85V55mHJy6KECxEpCvXPz3jmf8LXQee5dhFT + behaviours.py: QmdTzUWTqMNViB3Bz7FUpA5c8fohViUR95nWtRqcET4L6h dialogues.py: QmcCbdxFM4SX3MgXDxxbsC66gp8QK3C4W2czniQ5oDNc7G - handlers.py: Qmc3aHkjwoyveijSqFSjuQFoMYvGDNh5pQkRTGyPJbfmWL - strategy.py: QmP3tbQasCnfJ2sYE3NqhfWrid4b9RiYNUzFYcntEVcFWd + handlers.py: QmUpgPoVkzPzo1A1Atrkgd79FzE72cyYg9EvuYRSctFPNJ + strategy.py: QmTqQAAMUUBmXUY5YWvgLrDLFBFQ781vbxVi9WXsPo9Vr2 fingerprint_ignore_patterns: [] contracts: - fetchai/erc1155:0.11.0 diff --git a/packages/fetchai/skills/erc1155_deploy/strategy.py b/packages/fetchai/skills/erc1155_deploy/strategy.py index cf1daff573..c53e84bd0d 100644 --- a/packages/fetchai/skills/erc1155_deploy/strategy.py +++ b/packages/fetchai/skills/erc1155_deploy/strategy.py @@ -101,7 +101,7 @@ def __init__(self, **kwargs) -> None: } super().__init__(**kwargs) - + self._contract_id = str(ERC1155Contract.contract_id) self.is_behaviour_active = True self._is_contract_deployed = self._contract_address is not None self._is_tokens_created = self._token_ids is not None @@ -116,6 +116,11 @@ def ledger_id(self) -> str: """Get the ledger id.""" return self._ledger_id + @property + def contract_id(self) -> str: + """Get the contract id.""" + return self._contract_id + @property def mint_quantities(self) -> List[int]: """Get the list of mint quantities.""" diff --git a/packages/fetchai/skills/generic_buyer/__init__.py b/packages/fetchai/skills/generic_buyer/__init__.py index 16f0917e52..391bfb5f1f 100644 --- a/packages/fetchai/skills/generic_buyer/__init__.py +++ b/packages/fetchai/skills/generic_buyer/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the generic buyer skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/generic_buyer:0.13.0") diff --git a/packages/fetchai/skills/generic_buyer/skill.yaml b/packages/fetchai/skills/generic_buyer/skill.yaml index ab5afeff4c..5f27e247d5 100644 --- a/packages/fetchai/skills/generic_buyer/skill.yaml +++ b/packages/fetchai/skills/generic_buyer/skill.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmTR91jm7WfJpmabisy74NR5mc35YXjDU1zQAUKZeHRw8L - __init__.py: QmaEDrNJBeHCJpbdFckRUhLSBqCXQ6umdipTMpYhqSKxSG + __init__.py: Qmb8QqKHNLY3G3jMk8FMcobatKCyJVEQXeLs32H4vaRRX8 behaviours.py: QmejRk9gBDRqrbnTirmqmsR8mH6KXxPMk6Ex6KsjYHB2aL dialogues.py: QmY3uJpB2UpWsa9SipZQzMjYr7WtSycuF5YS3SLyCuh78N handlers.py: QmZaDk7TrKXUeUvT7zEgYiNn4fiUZxGuFYw6TVfReCSDDG diff --git a/packages/fetchai/skills/generic_seller/__init__.py b/packages/fetchai/skills/generic_seller/__init__.py index 46646653e8..68234614fa 100644 --- a/packages/fetchai/skills/generic_seller/__init__.py +++ b/packages/fetchai/skills/generic_seller/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the generic seller skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/generic_seller:0.14.0") diff --git a/packages/fetchai/skills/generic_seller/skill.yaml b/packages/fetchai/skills/generic_seller/skill.yaml index e2168157d1..b30c4f5172 100644 --- a/packages/fetchai/skills/generic_seller/skill.yaml +++ b/packages/fetchai/skills/generic_seller/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmPb5kHYZyhUN87EKmuahyGqDGgqVdGPyfC1KpGC3xfmcP - __init__.py: QmbfkeFnZVKppLEHpBrTXUXBwg2dpPABJWSLND8Lf1cmpG + __init__.py: QmQ3EL7VJ7GqFyz2vdfiB44tJBsjZgYqA6gDdojEPdXBut behaviours.py: QmbZuzaKRw6rx5jthJV5cd4uwapNDEH6544TeLphZxPoqY dialogues.py: QmfBWHVuKTzXu8vV5AkgWF6ZqMTZ3bs7SHEykoKXdmqvnH handlers.py: QmQNoMFPtkqN4hzsxGXSifkK41BqrM6QRpHcQhmyduXbsM diff --git a/packages/fetchai/skills/gym/__init__.py b/packages/fetchai/skills/gym/__init__.py index faa2b86180..7246916cec 100644 --- a/packages/fetchai/skills/gym/__init__.py +++ b/packages/fetchai/skills/gym/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains an example of skill for an AEA.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/gym:0.9.0") diff --git a/packages/fetchai/skills/gym/skill.yaml b/packages/fetchai/skills/gym/skill.yaml index c0b075fa9d..111b509a42 100644 --- a/packages/fetchai/skills/gym/skill.yaml +++ b/packages/fetchai/skills/gym/skill.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmUpD7PeLHS8nH7HJ48hBafSFhLn8Yrh571RCmxnStpNwq - __init__.py: QmTf1GCgHxu7qq4HvUNYiBwuGEL1DcsHQuWH7N7TB5TtoC + __init__.py: QmShrVBQzJ8yKMLcyWZUJ2K9Y4SUiL9wxjL7ryww9jyddE dialogues.py: QmTETCiWFK7vu8PMM9AaY64xHZhHivafmX33n4FXVKSub6 handlers.py: QmagqBdQaGuGbVS5dFqxFtEww2e1YF2NprBNPtt5pVA2hZ helpers.py: QmQTSG8MeSPBWbBR5wuLR2L4jvAX1xEJZLJfv2LYGvsMj5 diff --git a/packages/fetchai/skills/http_echo/__init__.py b/packages/fetchai/skills/http_echo/__init__.py index bc7c2c9805..c543cbce18 100644 --- a/packages/fetchai/skills/http_echo/__init__.py +++ b/packages/fetchai/skills/http_echo/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the http echo skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/http_echo:0.8.0") diff --git a/packages/fetchai/skills/http_echo/skill.yaml b/packages/fetchai/skills/http_echo/skill.yaml index 92a9f725ec..dbe07d67bb 100644 --- a/packages/fetchai/skills/http_echo/skill.yaml +++ b/packages/fetchai/skills/http_echo/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmYMHPsBX3wTMZZP89aKa7FzDCqGyvvue54ZBN8NZt4mNt - __init__.py: QmaKik9dXg6cajBPG9RTDr6BhVdWk8aoR8QDNfPQgiy1kv + __init__.py: QmZEGhk4Jr1oZhvyGaMj1z92b46c5frAaCuPHVJC4bzgJt dialogues.py: QmNWC7bEimPQUL1QbJD4uyZ16szPR6WsrKt3MuHZXKkwAH handlers.py: QmdTuiao42XEvbp2wuqKP4U4noRqAVdec9rss51pswYCoe fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/skills/ml_data_provider/__init__.py b/packages/fetchai/skills/ml_data_provider/__init__.py index ed15c864a9..01c02e7d24 100644 --- a/packages/fetchai/skills/ml_data_provider/__init__.py +++ b/packages/fetchai/skills/ml_data_provider/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the ml train and predict skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/ml_data_provider:0.13.0") diff --git a/packages/fetchai/skills/ml_data_provider/skill.yaml b/packages/fetchai/skills/ml_data_provider/skill.yaml index bd81223e25..4cbe69003b 100644 --- a/packages/fetchai/skills/ml_data_provider/skill.yaml +++ b/packages/fetchai/skills/ml_data_provider/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmakpsKWJrGRsoFaKR1Gf94KqcuPrkdXTYyciq5d4EhoFF - __init__.py: QmbQigh7SV7dD2hLTGv3k9tnvpYWN1otG5yjiM7F3bbGEQ + __init__.py: QmUVi3aegUdVK1KVkRSWN7ncAxv5CnzeD5m8C9rBoN6YZD behaviours.py: QmWgXU9qgahXwMKNqLLfDiGNYJozSXv2SVMkoPDQncC7ok dialogues.py: QmUExSjdSxrtTDzMB8tZ5J9tFrgd78LhdMuvptpViSPfAW handlers.py: QmbmS4C1GdumnVkA5dc7czWRkjb9HGzY7YeATrnuMVU2X9 diff --git a/packages/fetchai/skills/ml_train/__init__.py b/packages/fetchai/skills/ml_train/__init__.py index ed15c864a9..f7d1d1ad81 100644 --- a/packages/fetchai/skills/ml_train/__init__.py +++ b/packages/fetchai/skills/ml_train/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the ml train and predict skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/ml_train:0.13.0") diff --git a/packages/fetchai/skills/ml_train/skill.yaml b/packages/fetchai/skills/ml_train/skill.yaml index 26c8fb32c1..406aaf0d49 100644 --- a/packages/fetchai/skills/ml_train/skill.yaml +++ b/packages/fetchai/skills/ml_train/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmeHcYRhDJi6gqAHpK29UJz3doiyaicoqeTrPddqM3gh64 - __init__.py: QmbQigh7SV7dD2hLTGv3k9tnvpYWN1otG5yjiM7F3bbGEQ + __init__.py: QmZj3RwyqJH2cTYMFQQkvqW5TnbHbn4Zr8fhGbnTREqs2w behaviours.py: QmQiBzKV5rEFpMQbSjfjzAJ7SqwwGmso6TozWkjdytucLR dialogues.py: QmPVJzrAKhfhG8n2JLhvycFYRReBFBj362LxH6s885rSQM handlers.py: QmNpytwjcyJSFiJjETKu14MbVVNsthFpYpi1CpGfqsurzQ diff --git a/packages/fetchai/skills/simple_service_registration/__init__.py b/packages/fetchai/skills/simple_service_registration/__init__.py index 81d567366d..2da33423d0 100644 --- a/packages/fetchai/skills/simple_service_registration/__init__.py +++ b/packages/fetchai/skills/simple_service_registration/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the default skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/simple_service_registration:0.11.0") diff --git a/packages/fetchai/skills/simple_service_registration/skill.yaml b/packages/fetchai/skills/simple_service_registration/skill.yaml index cbbc0186c9..7dd7c770cd 100644 --- a/packages/fetchai/skills/simple_service_registration/skill.yaml +++ b/packages/fetchai/skills/simple_service_registration/skill.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmPuD9EtLKV143FbAaGUht5ZVtemVWXnm1jYmQxyUNnZ9T - __init__.py: QmNkZAetyctaZCUf6ACxP5onGWsSxu2hjSNoFmJ3ta6Lta + __init__.py: QmdHBxAVEUjLeBVxPiWdZw6SZaZiPrBVVbBXub9y8kUC6g behaviours.py: QmbAQq8xchbxFu7QT3RofR1VX1ExQGUBemCQuNjc5bUnVA dialogues.py: QmX8L6qMd4X6LHLyPmiXaQL2LA5Ca9Q6B77qYdfvfJ3aen handlers.py: QmYNHtjuLNqNxuuMZmdGHCNAyJKvwaw3a2DPo8n4jPrZKD diff --git a/packages/fetchai/skills/tac_control/__init__.py b/packages/fetchai/skills/tac_control/__init__.py index c8773f9482..bbd0c2a355 100644 --- a/packages/fetchai/skills/tac_control/__init__.py +++ b/packages/fetchai/skills/tac_control/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the tac control skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/tac_control:0.9.0") diff --git a/packages/fetchai/skills/tac_control/parameters.py b/packages/fetchai/skills/tac_control/parameters.py index d903d1ab20..a56d8e0893 100644 --- a/packages/fetchai/skills/tac_control/parameters.py +++ b/packages/fetchai/skills/tac_control/parameters.py @@ -26,6 +26,7 @@ from aea.helpers.search.models import Location from aea.skills.base import Model +from packages.fetchai.contracts.erc1155.contract import PUBLIC_ID as CONTRACT_ID from packages.fetchai.skills.tac_control.helpers import ( generate_currency_id_to_name, generate_good_id_to_name, @@ -123,6 +124,7 @@ def __init__(self, **kwargs): } super().__init__(**kwargs) + self._contract_id = str(CONTRACT_ID) self._currency_id_to_name = generate_currency_id_to_name( self.nb_currencies, self.currency_ids ) @@ -177,6 +179,11 @@ def contract_address(self, contract_address: str) -> None: raise AEAEnforceError("Contract address already provided.") self._contract_address = contract_address + @property + def contract_id(self) -> str: + """Get the contract id.""" + return self._contract_id + @property def is_contract_deployed(self) -> bool: """Check if there is a deployed instance of the contract.""" diff --git a/packages/fetchai/skills/tac_control/skill.yaml b/packages/fetchai/skills/tac_control/skill.yaml index 4c76d11367..72202a46b4 100644 --- a/packages/fetchai/skills/tac_control/skill.yaml +++ b/packages/fetchai/skills/tac_control/skill.yaml @@ -8,13 +8,13 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmdWECpRXZXH5JPV6wVHqeUtvjBhieUFTEoT2e7EY16N8M - __init__.py: Qme9YfgfPXymvupw1EHMJWGUSMTT6JQZxk2qaeKE76pgyN + __init__.py: QmbLvP4htsswaFrKXVXTUw8LFUrQx9rxEbcAiFwWpWj5Fo behaviours.py: QmPtGBEFGEdQCzeXC3ZkJuNTrSe217JupP1wtP8DMnm6cK dialogues.py: QmcVYVTZ95UKBnXzmKyGLo5LwSVcGYUTrifosQMSpzNnCX game.py: QmWebcVRJvNYEi21hryWL1DXFexRE2bS3SiPjWkiFM9onH handlers.py: QmVHZLJYva9WaXNFrzqh2HTsrWTLxqYdVrFiWPK4D3h7EP helpers.py: QmbXAH6yUue1SJSpaXRVpmbACr6mSHbqf5kFc3AHhtedJD - parameters.py: QmdNCew6YnAc4WoDnefR2xaTENmB8416AxqjUa3jMT6KTi + parameters.py: QmWDeVq1DFQ4xWU47JpYLU2JVuvayfzWqVQMqYoMouExT2 fingerprint_ignore_patterns: [] contracts: - fetchai/erc1155:0.11.0 diff --git a/packages/fetchai/skills/tac_control_contract/__init__.py b/packages/fetchai/skills/tac_control_contract/__init__.py index 8cbbb77fb9..193bc6ab43 100644 --- a/packages/fetchai/skills/tac_control_contract/__init__.py +++ b/packages/fetchai/skills/tac_control_contract/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the tac control skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/tac_control_contract:0.10.0") diff --git a/packages/fetchai/skills/tac_control_contract/behaviours.py b/packages/fetchai/skills/tac_control_contract/behaviours.py index 5690c1ad1d..de3fdbd7b5 100644 --- a/packages/fetchai/skills/tac_control_contract/behaviours.py +++ b/packages/fetchai/skills/tac_control_contract/behaviours.py @@ -67,7 +67,7 @@ def _request_contract_deploy_transaction(self) -> None: counterparty=LEDGER_API_ADDRESS, performative=ContractApiMessage.Performative.GET_DEPLOY_TRANSACTION, ledger_id=parameters.ledger_id, - contract_id="fetchai/erc1155:0.11.0", + contract_id=parameters.contract_id, callable=ContractApiDialogue.Callable.GET_DEPLOY_TRANSACTION.value, kwargs=ContractApiMessage.Kwargs( {"deployer_address": self.context.agent_address} @@ -162,7 +162,7 @@ def _request_create_items_transaction(self, game: Game) -> None: counterparty=LEDGER_API_ADDRESS, performative=ContractApiMessage.Performative.GET_RAW_TRANSACTION, ledger_id=parameters.ledger_id, - contract_id="fetchai/erc1155:0.11.0", + contract_id=parameters.contract_id, contract_address=parameters.contract_address, callable=ContractApiDialogue.Callable.GET_CREATE_BATCH_TRANSACTION.value, kwargs=ContractApiMessage.Kwargs( @@ -209,7 +209,7 @@ def _request_mint_items_transaction(self, game: Game) -> None: counterparty=LEDGER_API_ADDRESS, performative=ContractApiMessage.Performative.GET_RAW_TRANSACTION, ledger_id=parameters.ledger_id, - contract_id="fetchai/erc1155:0.11.0", + contract_id=parameters.contract_id, contract_address=parameters.contract_address, callable=ContractApiDialogue.Callable.GET_MINT_BATCH_TRANSACTION.value, kwargs=ContractApiMessage.Kwargs( diff --git a/packages/fetchai/skills/tac_control_contract/skill.yaml b/packages/fetchai/skills/tac_control_contract/skill.yaml index 1b72a47549..6a2a375899 100644 --- a/packages/fetchai/skills/tac_control_contract/skill.yaml +++ b/packages/fetchai/skills/tac_control_contract/skill.yaml @@ -8,8 +8,8 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmUiw6Dt97mXLzSizbnMNTsfLy3edGXKdYTNR5bke6sFsm - __init__.py: QmW9WBy1sNYVKpymGnpJY2pW5MEqGgVga2kBFUT9S34Yt5 - behaviours.py: QmXpRURhxKtDBeDBfZr2ZBxVxriVSnAZss8dLWuAEEi8EM + __init__.py: QmS4D39GhiMcHPDqup4uhKEpDmz45RX3VSyY23LVm82AfX + behaviours.py: QmSkZLqgM52WgWnpY9AYWqdccpYFn4PoX3FjpCg5zdg2FW dialogues.py: QmWvhTeUnDimhQQTzuSfJJ6d2ViqgBNooCMfRiVzvzApw3 game.py: QmQwskD5DBVNv1ouRpqGNLb3zQ5krLUcR6XXHUcJ5EVc8L handlers.py: QmYeA8eruEeVmhRpE6T7tjWreW9KWtVdtRS9FSTbKk9hq9 diff --git a/packages/fetchai/skills/tac_negotiation/__init__.py b/packages/fetchai/skills/tac_negotiation/__init__.py index 824d8fab6d..755bfde7b7 100644 --- a/packages/fetchai/skills/tac_negotiation/__init__.py +++ b/packages/fetchai/skills/tac_negotiation/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the tac negotiation skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/tac_negotiation:0.11.0") diff --git a/packages/fetchai/skills/tac_negotiation/skill.yaml b/packages/fetchai/skills/tac_negotiation/skill.yaml index bb8227159f..a32e3d5e25 100644 --- a/packages/fetchai/skills/tac_negotiation/skill.yaml +++ b/packages/fetchai/skills/tac_negotiation/skill.yaml @@ -8,12 +8,12 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmZucue4N3TX7BPe9CDZybfMQc1zpYbRKEVXAUGYRpcUfD - __init__.py: QmcgZLvHebdfocqBmbu6gJp35khs6nbdbC649jzUyS86wy + __init__.py: QmeFiTH6vHBd754rep2LrK96NMhZqKA4A9Qwfv9eZv6GzW behaviours.py: QmcBCRFpM6ZtcuNZ12HUuwKgQKVdiAqQ6jDNMvzTGMpDdx dialogues.py: QmXnRTML2HBWTX3CQ1xJ41tpq2VsgkQY4BoboE3AoMpb99 handlers.py: QmNcNs6sxdu4r97uGkGi8v5D82PgFzLwKHpMKhYZTd6pnu helpers.py: QmTJbGL8V6CLhbVhLekqKkHbu7cJMfBcv8DtWLSpkKP5tk - strategy.py: QmTwwJPiutCXNvU4GYmLXpK4x3muVcAGTRehfLXUGKzRSJ + strategy.py: QmUANbcuvYMiyrpdPbMS8xyAUb4h4LujyFtCzimSheVRJu transactions.py: QmXdxq36sFqKUAiLri9QUPNhSa1ELN1EbAJKPWzHQVWtTW fingerprint_ignore_patterns: [] contracts: diff --git a/packages/fetchai/skills/tac_negotiation/strategy.py b/packages/fetchai/skills/tac_negotiation/strategy.py index 9fb26b70db..03d737a512 100644 --- a/packages/fetchai/skills/tac_negotiation/strategy.py +++ b/packages/fetchai/skills/tac_negotiation/strategy.py @@ -42,7 +42,7 @@ from aea.helpers.transaction.base import Terms from aea.skills.base import Model -from packages.fetchai.contracts.erc1155.contract import PUBLIC_ID +from packages.fetchai.contracts.erc1155.contract import PUBLIC_ID as CONTRACT_ID from packages.fetchai.skills.tac_negotiation.dialogues import FipaDialogue from packages.fetchai.skills.tac_negotiation.helpers import ( build_goods_description, @@ -60,7 +60,6 @@ "constraint_type": "==", } DEFAULT_SEARCH_RADIUS = 5.0 -CONTRACT_ID = str(PUBLIC_ID) class Strategy(Model): @@ -111,7 +110,7 @@ def __init__(self, **kwargs) -> None: } self._radius = kwargs.pop("search_radius", DEFAULT_SEARCH_RADIUS) - self._contract_id = CONTRACT_ID + self._contract_id = str(CONTRACT_ID) super().__init__(**kwargs) diff --git a/packages/fetchai/skills/tac_participation/__init__.py b/packages/fetchai/skills/tac_participation/__init__.py index 726c112e48..98564fe4e3 100644 --- a/packages/fetchai/skills/tac_participation/__init__.py +++ b/packages/fetchai/skills/tac_participation/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the tac participation skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/tac_participation:0.10.0") diff --git a/packages/fetchai/skills/tac_participation/skill.yaml b/packages/fetchai/skills/tac_participation/skill.yaml index 2b0fb9eea2..0c7ea07e52 100644 --- a/packages/fetchai/skills/tac_participation/skill.yaml +++ b/packages/fetchai/skills/tac_participation/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmVNxdGy1pbosYrrvbXczbkJtU7f5ddrBPSNnFoJA9GJzg - __init__.py: QmcVpVrbV54Aogmowu6AomDiVMrVMo9BUvwKt9V1bJpBwp + __init__.py: QmNeESxZMkW9JmsU8U1WU57K3nLYqED5s2iYn8YKsdAsaP behaviours.py: QmX3UbuLohnPSLM2W6LrWcZyo4zXCr1YN5Bznu61v27SZC dialogues.py: QmZrJ1d9mhtfkxRg5QfsKbbtVZFa6cKna4anRWHvzNTEdD game.py: QmY5dV1SLK2Y1mreasZJRDXMDnJ82Un9XjR6TD8KdEhaLF diff --git a/packages/fetchai/skills/thermometer/__init__.py b/packages/fetchai/skills/thermometer/__init__.py index 81d567366d..eddd73c2c5 100644 --- a/packages/fetchai/skills/thermometer/__init__.py +++ b/packages/fetchai/skills/thermometer/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the default skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/thermometer:0.13.0") diff --git a/packages/fetchai/skills/thermometer/skill.yaml b/packages/fetchai/skills/thermometer/skill.yaml index 2585d9ee3e..2b4d21bd40 100644 --- a/packages/fetchai/skills/thermometer/skill.yaml +++ b/packages/fetchai/skills/thermometer/skill.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmUH2RCKZZ3sKBptXtYZaFJTsJFyk5P1aeTNYYV1YPRNxP - __init__.py: QmNkZAetyctaZCUf6ACxP5onGWsSxu2hjSNoFmJ3ta6Lta + __init__.py: QmNxJpBvfiVD7qkKxrtCgNkPgfbSk8mJE1V3vW3sYMYByT behaviours.py: QmWgXU9qgahXwMKNqLLfDiGNYJozSXv2SVMkoPDQncC7ok dialogues.py: QmPXfUWDxnHDaHQqsgtVhJ2v9dEgGWLtvEHKFvvFcDXGms handlers.py: QmNujxh4FtecTar5coHTJyY3BnVnsseuARSpyTLUDmFmfX diff --git a/packages/fetchai/skills/thermometer_client/__init__.py b/packages/fetchai/skills/thermometer_client/__init__.py index 81d567366d..06f7fb3666 100644 --- a/packages/fetchai/skills/thermometer_client/__init__.py +++ b/packages/fetchai/skills/thermometer_client/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the default skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/thermometer_client:0.12.0") diff --git a/packages/fetchai/skills/thermometer_client/skill.yaml b/packages/fetchai/skills/thermometer_client/skill.yaml index 65d8f0771e..29d56d467a 100644 --- a/packages/fetchai/skills/thermometer_client/skill.yaml +++ b/packages/fetchai/skills/thermometer_client/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmSn1bh9J7RT241DGT4812rTNGe2S2YLpEvy8ApNqNNqjf - __init__.py: QmNkZAetyctaZCUf6ACxP5onGWsSxu2hjSNoFmJ3ta6Lta + __init__.py: QmdKCsMU6G4ukcrWi8uUUkreD2aKHvDZqi33dhxRg9twEJ behaviours.py: QmXw3wGKAqCT55MRX61g3eN1T2YVY4XC5z9b4Dg7x1Wihc dialogues.py: QmcUgBjxeytE5aAx3VvPyna5EcBuqck9KazG3HygCWjawv handlers.py: QmYx8WzeR2aCg2b2uiR1K2NHLn8DKhzAahLXoFnrXyDoDz diff --git a/packages/fetchai/skills/weather_client/__init__.py b/packages/fetchai/skills/weather_client/__init__.py index 81d567366d..cd542caf6d 100644 --- a/packages/fetchai/skills/weather_client/__init__.py +++ b/packages/fetchai/skills/weather_client/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the default skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/weather_client:0.12.0") diff --git a/packages/fetchai/skills/weather_client/skill.yaml b/packages/fetchai/skills/weather_client/skill.yaml index fb603cf822..dfeb5a7175 100644 --- a/packages/fetchai/skills/weather_client/skill.yaml +++ b/packages/fetchai/skills/weather_client/skill.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmP5vjtJk1TirWqzFcgvQYTZeZwaV3Qs5HKVW1WNWgMTPM - __init__.py: QmNkZAetyctaZCUf6ACxP5onGWsSxu2hjSNoFmJ3ta6Lta + __init__.py: QmUUAZ4ajMcfZGJrMpCT8RPtpu2BM4t6fz7b8khubUjHgq behaviours.py: QmXw3wGKAqCT55MRX61g3eN1T2YVY4XC5z9b4Dg7x1Wihc dialogues.py: QmcUgBjxeytE5aAx3VvPyna5EcBuqck9KazG3HygCWjawv handlers.py: QmYx8WzeR2aCg2b2uiR1K2NHLn8DKhzAahLXoFnrXyDoDz diff --git a/packages/fetchai/skills/weather_station/__init__.py b/packages/fetchai/skills/weather_station/__init__.py index 81d567366d..82bba490bf 100644 --- a/packages/fetchai/skills/weather_station/__init__.py +++ b/packages/fetchai/skills/weather_station/__init__.py @@ -18,3 +18,8 @@ # ------------------------------------------------------------------------------ """This module contains the implementation of the default skill.""" + +from aea.configurations.base import PublicId + + +PUBLIC_ID = PublicId.from_str("fetchai/weather_station:0.13.0") diff --git a/packages/fetchai/skills/weather_station/skill.yaml b/packages/fetchai/skills/weather_station/skill.yaml index aa62cc9a79..2fb45bcad8 100644 --- a/packages/fetchai/skills/weather_station/skill.yaml +++ b/packages/fetchai/skills/weather_station/skill.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: Qma72715sXAgDLggNNVkXQoVxCu9hyEEFKbyWTKSavEF2v - __init__.py: QmNkZAetyctaZCUf6ACxP5onGWsSxu2hjSNoFmJ3ta6Lta + __init__.py: QmdBsQSN5gStoSgxqnmToX8m1u9MXc8NGoRoMy4SoLx9Yx behaviours.py: QmfPE6zrMmY2QARQt3gNZ2oiV3uAqvAQXSvU3XWnFDUQkG db_communication.py: QmSLm4jic8JbP2wz35WyWevc9H2ZxsEYfaBMWcEx4pzVcy dialogues.py: QmPXfUWDxnHDaHQqsgtVhJ2v9dEgGWLtvEHKFvvFcDXGms diff --git a/packages/hashes.csv b/packages/hashes.csv index 1c9c2a4ca4..45a8134191 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -23,18 +23,18 @@ fetchai/connections/gym,QmaVjWPpipys1swkQy64GitynFjyTNZMaVRex4k2RiLnyy fetchai/connections/http_client,QmPL4gBPPkJgX2s3ZpwgvA4LU7zad159nzS3MTTREPLWC3 fetchai/connections/http_server,Qmdc7MCZVmWk76k2pHB2zBwTJ9iokWpuZ8iqzzreBpVEgn fetchai/connections/ledger,QmQz561g9MqeTviwbVRUKSY4m1rP5htevi23GKcMYfVwFb -fetchai/connections/local,QmVw7RDiP5uBtUKodcvvS3uvojPYQGHKMjavUJ2iE7aNB4 -fetchai/connections/oef,QmUnHLMteyQvJKLg1EA5FgwugHz5rjZZFboAL5KB3NgeU1 +fetchai/connections/local,QmXjdBwfTZ7rfSuEsw5xEVTufTeuLKWA6qD1yYrg2pg1YD +fetchai/connections/oef,Qmbx8qdne85FDfYRz6xgCqFizFZsvFvAT6ERc52pzX8EQR fetchai/connections/p2p_libp2p,QmStTaRFFdh6nTm68A9C2XPh2wR1teBPM3k1y9mC9hVsiz fetchai/connections/p2p_libp2p_client,QmV3Tp1d9sUMQpyvtYnsTQPudk1UMQrmaccWnPb5xGebss fetchai/connections/p2p_stub,QmPstikxKerbMnnjUJrMsSHpEx2UXAhPDa6N5nzB3qeRJB fetchai/connections/scaffold,QmNUta43nLexAHaXLgmLQYEjntLXSV6MLNvc6Q2CTx7eBS -fetchai/connections/soef,QmcRKha58cJA15nGQYCamvt5rmAQgfFwsQYdWfJF5HvUSc +fetchai/connections/soef,QmZgKwrw1myPWMmNNNr73PtMR68hn51Um1z5K3rDp8or2x fetchai/connections/stub,QmUEv1bMiFqk3wSR3EnYpNDrufwmHckFdpWKwjtcRjdzjN fetchai/connections/tcp,QmdiYVdNCHFvYWhNMGLhAnXweoB6DsiqdzG7i37FQApPew fetchai/connections/webhook,QmRXxSvtwzvSdEXjY5UeUuoJBD4qzofMkQCzRxeoQUBmJH -fetchai/contracts/erc1155,QmbqeTU1TDRVHfqdX6VNf9sWdoqjRAcC1i25ZaCwZXjntY -fetchai/contracts/scaffold,QmTKkXifQKq5sTVdVKeD9UGnDwdJoEAoJDjY6qUPt9Bsv2 +fetchai/contracts/erc1155,QmV7NKfpXVxeVB4JamCUKypJA7YcJseKrgfYrUuKW7egkU +fetchai/contracts/scaffold,QmWDtgrzdwC7jSpMNu6MLy3U1fM7wVwgpC3JbbaueKj81q fetchai/protocols/contract_api,QmfHLj6VAmqCXzxZ11Vz7FLE3obni2UCLMnKxyqFA1iJCF fetchai/protocols/default,QmWYLfSXcMkvwdAzKmdD3rweSRNVwX5UTgQaH8tECGBxv4 fetchai/protocols/fipa,QmdiRToU57bqkzD23fiz7LmtkyCDaeunzGFRdoSV9ZFZLw @@ -49,27 +49,27 @@ fetchai/protocols/state_update,Qmdo6GidjoBnZgwYtH9QjdDJeAsjGzxSxxxWtbpHJyx9XG fetchai/protocols/t_protocol,Qmb7pLnen3VmikYN12Fq6mWgRLanSTnxLtYpcP1g2NYz74 fetchai/protocols/t_protocol_no_ct,QmY5WNHZTDsQWqdRcW5TCBtvPd8j6pX7PgCBwEqfMMYufb fetchai/protocols/tac,QmfAvonoD7oM7LBejz9QPbbhF9CbQXbQVkbaDhDwK5HUSS -fetchai/skills/aries_alice,Qmb1BzZ9s5uRxPiqj5gT47JN36LZqGpe3uPP8zv4EiLNDZ -fetchai/skills/aries_faber,QmWeJTouqVPJocuFJjDijwCdF1vNfvShFLPNdSSQQrxKD8 -fetchai/skills/carpark_client,Qmd1rUfLVA9MhJThhUCxeAMdcoRJAQZAmjiLZv58X6EQ2U -fetchai/skills/carpark_detection,QmYnJmmKzhghbV4uXphQfCg1S4TEQBLg6dsGzJ4i8fj1yY -fetchai/skills/echo,QmP1dwNe8WqnytCwU17bhpVnq8WkDGzryqMsjnbFAZUuu1 -fetchai/skills/erc1155_client,QmcvGurDx1BxExWqFc1gkJbo6LnVawNGeSS2TjpneqN1pa -fetchai/skills/erc1155_deploy,QmTeJscJ5eDUbr4i8iVW9ij2a78vM23MuEBDq7btExhcft -fetchai/skills/error,QmQdJfLrNxHxXMswvntbAqxJWwP5wWgaboWxMiT28pT3Rh -fetchai/skills/generic_buyer,QmdUqBJTij8pJxYBRBasvPE56ST9j6houRomxj6TB5pJgn -fetchai/skills/generic_seller,Qmaop7p743Wn911M11kgr3ek62MjC56iqihD26iByJ8L4m -fetchai/skills/gym,QmVZPhjB6PQbYH5f5XNFqsdf63aEBxpLtW5Zb7kRUc4S9L -fetchai/skills/http_echo,QmSrhSVBjR6EdYZ7d6pSqRexBk7jpqcfHqKs9xRegDLGqS -fetchai/skills/ml_data_provider,QmSRCvaVQs6MDnpNb7bk2zqks9sVGXvxC3bEkBTxTLhftZ -fetchai/skills/ml_train,QmRg6C7JSSZEheCyLkaMXVwgMkAcTtGHAjv6XWVcNVuQJw -fetchai/skills/scaffold,QmWXsefztjMfLAsmHGAdLLAvZJb1WxGPpDfx3cS1FWSEFT -fetchai/skills/simple_service_registration,QmREkUut9Xr2pwwkJ7EXxzpTC4M1ub9R18CwY9YA9J7QJb -fetchai/skills/tac_control,QmQ1PPbuKfw4JJsYWmhQdU17y5yVZTJ1pxg2T9qVKqJ6SH -fetchai/skills/tac_control_contract,QmWAEt7nH2sdzGec4LPByR7VrZLnN8n4ptoxgYP9Y9exhE -fetchai/skills/tac_negotiation,QmditL1KuEmHt9T727Um7ZXU7geJ7GAqMDwK4ztzL1JTWv -fetchai/skills/tac_participation,QmVExZCQgqsFAAYwLtNxFog7HoMuRVSS2hkMR9uukCCy5t -fetchai/skills/thermometer,QmNd289PBg5qyDLjQexNoN1Y2dQDhP3jsT65AKiMwJFvzN -fetchai/skills/thermometer_client,QmaPRBznjimpX18uRB7JbtEdU82cimMxXWDPnbk9T4VwQ6 -fetchai/skills/weather_client,QmewFx3nxrFqQpLutXY6fr8AMQtJfYoeK4uXA8sSHG883Z -fetchai/skills/weather_station,QmcMJ6uFxd172cyPze87FMRECRxSZNtgShfZzEfFjKpt97 +fetchai/skills/aries_alice,QmXep2mZJZah7PwnP8u766y6wijXB6ikNpDuij4xzGMQiE +fetchai/skills/aries_faber,QmX3j9MwMbvhBn5utr4Fi6pwRmaShibkAgmXn7C4oBgypU +fetchai/skills/carpark_client,QmVCL6hPWHU3pZhWPmJm3wadSZ1ksLM31pzWTWyiEEYmQJ +fetchai/skills/carpark_detection,QmVdJhKfpPYkM1vDbzVbHTymhrh6TCMgYhpz4CDtJw156H +fetchai/skills/echo,QmbZcW8TwMyFknmA3JN9EsrJU5nWwzveXCH3WDxBkH2Xto +fetchai/skills/erc1155_client,QmbtirnrV3KsFTvh9v6crPxf1sMyPNpqyKxMFkn92Hd4VL +fetchai/skills/erc1155_deploy,QmRJeYfmZutbdkX74ChUz8Pwn3M1it9pSBvKsqr6u82R5k +fetchai/skills/error,QmcxKbE763fRPNjoiXjGDNaza88h4aNMThcYoRgYDiPL2u +fetchai/skills/generic_buyer,QmZBLhQvmx2WqXy7AK2tzjATEbdALZAqAtKvXg83YkMzDY +fetchai/skills/generic_seller,QmQLTM4apR4WE7NYxysaW15iwJ8kiY2c28abHp7ccLbfyd +fetchai/skills/gym,QmXuzQRc8MV7K73mMen5qscL1NkstKcNtQtpcFa5pyiTs3 +fetchai/skills/http_echo,QmfBSgkXqSRWkAeXBfqUVJaS6LFadZoJNrXkFgQK3TiRzm +fetchai/skills/ml_data_provider,Qmb5w3ZroV5axM13QuAvwyWd23PCyAqZ7m9D3oQpNL8wSE +fetchai/skills/ml_train,QmcEPUc8hTT57tWBAiBZTZMwKHYwh2hJpjArnYG2w7n4aW +fetchai/skills/scaffold,QmaZaa8avpHmERmBup47hCup42YbvP9CYo5ogDfmLK16cP +fetchai/skills/simple_service_registration,QmcGP9pSw1zZ7CBfq3obFWSUAzkbRVqz4hsnXqhFgLiQ1a +fetchai/skills/tac_control,QmNriQvKvhMsxCZSnFxsYbcYGhVpnqCb9fmcmGax6ocxcR +fetchai/skills/tac_control_contract,QmQGLkwNsU9wT8xsBhfjYuht2bwm7VN1XBfRqnDzP8UDYt +fetchai/skills/tac_negotiation,QmTkdVwN4vT8p9E1AtszbQgrizxEL5JdKZjwcFdy5Bgrfq +fetchai/skills/tac_participation,QmWnL3VVMwfoJDL3rmEcoiXxandy8ZgGgaXBhGoWnzF6xs +fetchai/skills/thermometer,QmTKEhqRWAHhoom1ApipHnZ7VCVHGnjjCLPwHMjNALaR9Q +fetchai/skills/thermometer_client,QmPcC3KzkoZihZxxCqkYwddzs9uwoFVk2Q7GTtShtJjZw1 +fetchai/skills/weather_client,QmUMhEGwCKsLtMfB9eXbkZCx7Bkx7xLLLAHGy7Hs6H2ABP +fetchai/skills/weather_station,QmeLas4u8UVjyVWf9Uj7gZ4Ev4TkUjnWz1WDNAsXKtfbuL diff --git a/tests/test_cli/test_utils/test_utils.py b/tests/test_cli/test_utils/test_utils.py index f94cb08efe..5aa1ba7a08 100644 --- a/tests/test_cli/test_utils/test_utils.py +++ b/tests/test_cli/test_utils/test_utils.py @@ -42,9 +42,9 @@ find_item_locally, get_package_path_unified, get_wallet_from_context, + is_distributed_item, is_fingerprint_correct, is_item_present_unified, - is_local_item, try_get_balance, try_get_item_source_path, try_get_item_target_path, @@ -462,9 +462,9 @@ def test_is_item_present_unified(mock_, vendor): (STATE_UPDATE_PROTOCOL.to_latest(), True), ], ) -def test_is_local_item(public_id, expected_outcome): - """Test the 'is_local_item' CLI utility function.""" - assert is_local_item(public_id) is expected_outcome +def test_is_distributed_item(public_id, expected_outcome): + """Test the 'is_distributed_item' CLI utility function.""" + assert is_distributed_item(public_id) is expected_outcome class TestGetWalletFromtx(AEATestCaseEmpty): From 777ae59b643a5c78aeffa4bac3ffa83df8063ebe Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 12:32:53 +0100 Subject: [PATCH 038/155] remove aliases of public id --- aea/cli_gui/templates/home.html | 4 +- aea/configurations/base.py | 6 --- aea/contracts/base.py | 6 +-- aea/mail/base.py | 8 +-- aea/protocols/default/message.py | 4 +- aea/protocols/default/protocol.yaml | 2 +- aea/protocols/generator/base.py | 13 ++--- aea/protocols/scaffold/message.py | 4 +- aea/protocols/scaffold/protocol.yaml | 2 +- aea/protocols/signing/message.py | 4 +- aea/protocols/signing/protocol.yaml | 2 +- aea/protocols/state_update/message.py | 4 +- aea/protocols/state_update/protocol.yaml | 2 +- aea/registries/base.py | 42 +++++++-------- aea/registries/filter.py | 4 +- aea/registries/resources.py | 33 +++++------- aea/skills/base.py | 3 +- aea/skills/error/handlers.py | 4 +- aea/skills/error/skill.yaml | 2 +- aea/skills/scaffold/handlers.py | 4 +- aea/skills/scaffold/skill.yaml | 2 +- docs/api/contracts/base.md | 2 +- docs/api/mail/base.md | 6 +-- docs/api/registries/base.md | 24 ++++----- docs/api/registries/filter.md | 2 +- docs/api/registries/resources.md | 24 ++++----- docs/decision-maker-transaction.md | 8 +-- docs/generic-skills-step-by-step.md | 18 +++---- docs/skill-guide.md | 4 +- .../fetchai/protocols/contract_api/message.py | 4 +- .../protocols/contract_api/protocol.yaml | 2 +- packages/fetchai/protocols/fipa/message.py | 4 +- packages/fetchai/protocols/fipa/protocol.yaml | 2 +- packages/fetchai/protocols/gym/message.py | 4 +- packages/fetchai/protocols/gym/protocol.yaml | 2 +- packages/fetchai/protocols/http/message.py | 4 +- packages/fetchai/protocols/http/protocol.yaml | 2 +- .../fetchai/protocols/ledger_api/message.py | 4 +- .../protocols/ledger_api/protocol.yaml | 2 +- .../fetchai/protocols/ml_trade/message.py | 4 +- .../fetchai/protocols/ml_trade/protocol.yaml | 2 +- .../fetchai/protocols/oef_search/message.py | 4 +- .../protocols/oef_search/protocol.yaml | 2 +- packages/fetchai/protocols/tac/message.py | 4 +- packages/fetchai/protocols/tac/protocol.yaml | 2 +- .../fetchai/skills/aries_alice/handlers.py | 8 +-- .../fetchai/skills/aries_alice/skill.yaml | 2 +- .../fetchai/skills/aries_faber/handlers.py | 6 +-- .../fetchai/skills/aries_faber/skill.yaml | 2 +- .../fetchai/skills/erc1155_client/handlers.py | 12 ++--- .../fetchai/skills/erc1155_client/skill.yaml | 2 +- .../fetchai/skills/erc1155_deploy/handlers.py | 12 ++--- .../fetchai/skills/erc1155_deploy/skill.yaml | 2 +- .../fetchai/skills/generic_buyer/handlers.py | 10 ++-- .../fetchai/skills/generic_buyer/skill.yaml | 2 +- .../fetchai/skills/generic_seller/handlers.py | 8 +-- .../fetchai/skills/generic_seller/skill.yaml | 2 +- .../skills/ml_data_provider/handlers.py | 6 +-- .../skills/ml_data_provider/skill.yaml | 2 +- packages/fetchai/skills/ml_train/handlers.py | 8 +-- packages/fetchai/skills/ml_train/skill.yaml | 2 +- .../simple_service_registration/handlers.py | 4 +- .../simple_service_registration/skill.yaml | 2 +- .../skills/tac_control_contract/handlers.py | 8 +-- .../skills/tac_control_contract/skill.yaml | 2 +- .../skills/tac_negotiation/handlers.py | 12 ++--- .../fetchai/skills/tac_negotiation/skill.yaml | 2 +- packages/hashes.csv | 54 +++++++++---------- tests/common/utils.py | 4 +- tests/data/generator/t_protocol/message.py | 4 +- tests/data/generator/t_protocol/protocol.yaml | 2 +- .../generator/t_protocol_no_ct/message.py | 4 +- .../generator/t_protocol_no_ct/protocol.yaml | 2 +- tests/test_cli/test_get_multiaddress.py | 6 +-- .../decision_maker_transaction.py | 4 +- ..._client_connection_to_aries_cloud_agent.py | 4 +- .../test_ledger/test_ledger_api.py | 4 +- .../test_generator/test_end_to_end.py | 6 +-- 78 files changed, 239 insertions(+), 262 deletions(-) diff --git a/aea/cli_gui/templates/home.html b/aea/cli_gui/templates/home.html index 104c61a51e..622c67f09f 100644 --- a/aea/cli_gui/templates/home.html +++ b/aea/cli_gui/templates/home.html @@ -226,10 +226,10 @@

    Run "NONE" agent diff --git a/aea/configurations/base.py b/aea/configurations/base.py index 0692d55eb6..839f7700c3 100644 --- a/aea/configurations/base.py +++ b/aea/configurations/base.py @@ -952,12 +952,6 @@ def json(self) -> Dict: return dict(**self.public_id.json, type=str(self.component_type)) -ProtocolId = PublicId -ContractId = PublicId -ConnectionId = PublicId -SkillId = PublicId - - class PackageConfiguration(Configuration, ABC): """ This class represent a package configuration. diff --git a/aea/contracts/base.py b/aea/contracts/base.py index c1e7b2d5f0..5edce8de44 100644 --- a/aea/contracts/base.py +++ b/aea/contracts/base.py @@ -25,7 +25,7 @@ from typing import Any, Dict, Optional, cast from aea.components.base import Component, load_aea_package -from aea.configurations.base import ComponentType, ContractConfig, ContractId +from aea.configurations.base import ComponentType, ContractConfig, PublicId from aea.configurations.loader import load_component_configuration from aea.crypto.base import LedgerApi from aea.crypto.registries import Registry @@ -40,7 +40,7 @@ class Contract(Component): """Abstract definition of a contract.""" - contract_id = None # type: ContractId + contract_id = None # type: PublicId contract_interface: Any = None def __init__(self, contract_config: ContractConfig, **kwargs): @@ -52,7 +52,7 @@ def __init__(self, contract_config: ContractConfig, **kwargs): super().__init__(contract_config, **kwargs) @property - def id(self) -> ContractId: + def id(self) -> PublicId: """Get the name.""" return self.public_id diff --git a/aea/mail/base.py b/aea/mail/base.py index 96ddfc2115..755c3947ef 100644 --- a/aea/mail/base.py +++ b/aea/mail/base.py @@ -24,7 +24,7 @@ from urllib.parse import urlparse from aea.common import Address -from aea.configurations.base import PackageId, ProtocolId, PublicId +from aea.configurations.base import PackageId, PublicId from aea.exceptions import enforce from aea.mail import base_pb2 from aea.protocols.base import Message @@ -311,7 +311,7 @@ def __init__( self, to: Address, sender: Address, - protocol_id: ProtocolId, + protocol_id: PublicId, message: Union[Message, bytes], context: Optional[EnvelopeContext] = None, ): @@ -361,12 +361,12 @@ def sender(self, sender: Address) -> None: self._sender = sender @property - def protocol_id(self) -> ProtocolId: + def protocol_id(self) -> PublicId: """Get protocol id.""" return self._protocol_id @protocol_id.setter - def protocol_id(self, protocol_id: ProtocolId) -> None: + def protocol_id(self, protocol_id: PublicId) -> None: """Set the protocol id.""" self._protocol_id = protocol_id diff --git a/aea/protocols/default/message.py b/aea/protocols/default/message.py index a11232cff4..351b4bcfb4 100644 --- a/aea/protocols/default/message.py +++ b/aea/protocols/default/message.py @@ -22,7 +22,7 @@ import logging from typing import Dict, Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message from aea.protocols.default.custom_types import ErrorCode as CustomErrorCode @@ -36,7 +36,7 @@ class DefaultMessage(Message): """A protocol for exchanging any bytes message.""" - protocol_id = ProtocolId.from_str("fetchai/default:0.7.0") + protocol_id = PublicId.from_str("fetchai/default:0.7.0") ErrorCode = CustomErrorCode diff --git a/aea/protocols/default/protocol.yaml b/aea/protocols/default/protocol.yaml index 04ed35ed0b..6168e1149f 100644 --- a/aea/protocols/default/protocol.yaml +++ b/aea/protocols/default/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: default.proto: QmNzMUvXkBm5bbitR5Yi49ADiwNn1FhCvXqSKKoqAPZyXv default_pb2.py: QmSRFi1s3jcqnPuk4yopJeNuC6o58RL7dvEdt85uns3B3N dialogues.py: Qmc991snbS7DwFxo1cKcq1rQ2uj7y8ukp14kfe2zve387C - message.py: QmVCPyC32cbriCbJE3UxNcvmdKMHgosWbrtPzbN4jLEabX + message.py: QmP18snH9pfyU2iGTPYptiKCBxSRPV1MHT38NTAxr3qbFv serialization.py: QmRF7XPNEk1emKmFMZaYBCF3gr4CdkMXagoSpjQEmnRGG6 fingerprint_ignore_patterns: [] dependencies: diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index a94dd3bddc..f62e69d09f 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -601,7 +601,7 @@ def _message_class_str(self) -> str: # Imports cls_str += self.indent + "import logging\n" cls_str += self._import_from_typing_module() + "\n\n" - cls_str += self.indent + "from aea.configurations.base import ProtocolId\n" + cls_str += self.indent + "from aea.configurations.base import PublicId\n" cls_str += self.indent + "from aea.exceptions import AEAEnforceError, enforce\n" cls_str += MESSAGE_IMPORT + "\n" if self._import_from_custom_types_module() != "": @@ -626,13 +626,10 @@ def _message_class_str(self) -> str: ) # Class attributes - cls_str += ( - self.indent - + 'protocol_id = ProtocolId.from_str("{}/{}:{}")\n'.format( - self.protocol_specification.author, - self.protocol_specification.name, - self.protocol_specification.version, - ) + cls_str += self.indent + 'protocol_id = PublicId.from_str("{}/{}:{}")\n'.format( + self.protocol_specification.author, + self.protocol_specification.name, + self.protocol_specification.version, ) for custom_type in self.spec.all_custom_types: cls_str += "\n" diff --git a/aea/protocols/scaffold/message.py b/aea/protocols/scaffold/message.py index 763bd67970..36f019dc61 100644 --- a/aea/protocols/scaffold/message.py +++ b/aea/protocols/scaffold/message.py @@ -21,7 +21,7 @@ from enum import Enum -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import enforce from aea.protocols.base import Message from aea.protocols.scaffold.serialization import MyScaffoldSerializer @@ -30,7 +30,7 @@ class MyScaffoldMessage(Message): """The scaffold message class.""" - protocol_id = ProtocolId.from_str("fetchai/scaffold:0.1.0") + protocol_id = PublicId.from_str("fetchai/scaffold:0.1.0") serializer = MyScaffoldSerializer class Performative(Enum): diff --git a/aea/protocols/scaffold/protocol.yaml b/aea/protocols/scaffold/protocol.yaml index e5377c1b93..d65c455105 100644 --- a/aea/protocols/scaffold/protocol.yaml +++ b/aea/protocols/scaffold/protocol.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: __init__.py: Qmc9Ln8THrWmwou4nr3Acag7vcZ1fv8v5oRSkCWtv1aH6t - message.py: QmQRGUakU9MGVAXy8Hmte5DEAvNYuzw8znt1h9Jg62ZEpM + message.py: QmWPrVTSHeKANCaVA4VaQyMGLix7yiMALbytsKZppAG2VU serialization.py: QmaAf5fppirUWe8JaeBbsqfbeofTHe8DDGHJooe2X389qo fingerprint_ignore_patterns: [] dependencies: {} diff --git a/aea/protocols/signing/message.py b/aea/protocols/signing/message.py index 38a069a582..0f905b7286 100644 --- a/aea/protocols/signing/message.py +++ b/aea/protocols/signing/message.py @@ -22,7 +22,7 @@ import logging from typing import Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message from aea.protocols.signing.custom_types import ErrorCode as CustomErrorCode @@ -43,7 +43,7 @@ class SigningMessage(Message): """A protocol for communication between skills and decision maker.""" - protocol_id = ProtocolId.from_str("fetchai/signing:0.5.0") + protocol_id = PublicId.from_str("fetchai/signing:0.5.0") ErrorCode = CustomErrorCode diff --git a/aea/protocols/signing/protocol.yaml b/aea/protocols/signing/protocol.yaml index 5c0830c962..7b45fae0fa 100644 --- a/aea/protocols/signing/protocol.yaml +++ b/aea/protocols/signing/protocol.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: Qmd7JYjcrD95jdYfSZs6j7UX5TPZfPYXuTFrUzS3FHCxhS custom_types.py: Qmc7sAyCQbAaVs5dZf9hFkTrB2BG8VAioWzbyKBAybrQ1J dialogues.py: QmQ1WKs3Dn15oDSwpc4N8hdADLxrn76U4X5SiLAmyGiPPY - message.py: QmZcdSTCGhHnUV3WtRBUWPu66Qa66fv8wfQm994473JAcd + message.py: QmVvuPHEoEP9D2mFfaqifj9oqqqe31HiXGeeENcubhSabw serialization.py: QmbXSvWYfEmYyGdfuTXVJYaJfzqVLtMaLR8H3UCLZkvbSC signing.proto: QmcxyLzqhTE9xstAEzCVH17osbLxmSdALx9njmuPjhjrvZ signing_pb2.py: QmY3Ak5ih5zGvKjeZ5EnzrGX4tMYn5dWpjPArQwFeJpVKu diff --git a/aea/protocols/state_update/message.py b/aea/protocols/state_update/message.py index 2c58d72ec7..386f5d49f9 100644 --- a/aea/protocols/state_update/message.py +++ b/aea/protocols/state_update/message.py @@ -22,7 +22,7 @@ import logging from typing import Dict, Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -37,7 +37,7 @@ class StateUpdateMessage(Message): """A protocol for state updates to the decision maker state.""" - protocol_id = ProtocolId.from_str("fetchai/state_update:0.5.0") + protocol_id = PublicId.from_str("fetchai/state_update:0.5.0") class Performative(Message.Performative): """Performatives for the state_update protocol.""" diff --git a/aea/protocols/state_update/protocol.yaml b/aea/protocols/state_update/protocol.yaml index eba215e7ec..f667f53b83 100644 --- a/aea/protocols/state_update/protocol.yaml +++ b/aea/protocols/state_update/protocol.yaml @@ -9,7 +9,7 @@ fingerprint: README.md: QmZaiA3tRSsvofPcAdjKEZZh9RAyZL9Wk8vXHUoGy9enLi __init__.py: QmUrvqDr24Ph1nnUqjTUPh9QoftuTsef3Dj3yzPUMY38fu dialogues.py: Qmd59WgpFccLn1zhpLdwm3zDCmCsjSoQXVn6M7PgFwwkgR - message.py: QmPAi5XBDsH7Sk1HMK7c7vXjrTbdJ6JYhAtHqoKk9whbAu + message.py: QmXjRqR5F1wN95p8CzxssKQvHCnpTAZJq83oBcQs9mk1Se serialization.py: QmciaNPHkpyxWLYVtBPnYkKHj6Ur9E3CPJ9QvWbXFD91Yw state_update.proto: QmdmEUSa7PDxJ98ZmGE7bLFPmUJv8refgbkHPejw6uDdwD state_update_pb2.py: QmQr5KXhapRv9AnfQe7Xbr5bBqYWp9DEMLjxX8UWmK75Z4 diff --git a/aea/registries/base.py b/aea/registries/base.py index 93e86103cb..fcfa252b39 100644 --- a/aea/registries/base.py +++ b/aea/registries/base.py @@ -25,13 +25,7 @@ from typing import Dict, Generic, List, Optional, Set, Tuple, TypeVar, cast from aea.components.base import Component -from aea.configurations.base import ( - ComponentId, - ComponentType, - ProtocolId, - PublicId, - SkillId, -) +from aea.configurations.base import ComponentId, ComponentType, PublicId from aea.helpers.logging import WithLogger, get_logger from aea.skills.base import Behaviour, Handler, Model @@ -327,7 +321,7 @@ def teardown(self) -> None: class ComponentRegistry( - Registry[Tuple[SkillId, str], SkillComponentType], Generic[SkillComponentType] + Registry[Tuple[PublicId, str], SkillComponentType], Generic[SkillComponentType] ): """This class implements a generic registry for skill components.""" @@ -343,11 +337,11 @@ def __init__(self, **kwargs) -> None: self._items: PublicIdRegistry[ Dict[str, SkillComponentType] ] = PublicIdRegistry() - self._dynamically_added: Dict[SkillId, Set[str]] = {} + self._dynamically_added: Dict[PublicId, Set[str]] = {} def register( self, - item_id: Tuple[SkillId, str], + item_id: Tuple[PublicId, str], item: SkillComponentType, is_dynamically_added: bool = False, ) -> None: @@ -378,7 +372,7 @@ def register( if is_dynamically_added: self._dynamically_added.setdefault(skill_id, set()).add(item_name) - def unregister(self, item_id: Tuple[SkillId, str]) -> None: + def unregister(self, item_id: Tuple[PublicId, str]) -> None: """ Unregister a item. @@ -389,7 +383,7 @@ def unregister(self, item_id: Tuple[SkillId, str]) -> None: self._unregister_from_main_index(item_id) def _unregister_from_main_index( - self, item_id: Tuple[SkillId, str] + self, item_id: Tuple[PublicId, str] ) -> SkillComponentType: """ Unregister a item. @@ -420,7 +414,7 @@ def _unregister_from_main_index( self._dynamically_added.pop(skill_id, None) return item - def fetch(self, item_id: Tuple[SkillId, str]) -> Optional[SkillComponentType]: + def fetch(self, item_id: Tuple[PublicId, str]) -> Optional[SkillComponentType]: """ Fetch an item. @@ -434,7 +428,7 @@ def fetch(self, item_id: Tuple[SkillId, str]) -> Optional[SkillComponentType]: return None return name_to_item.get(item_name, None) - def fetch_by_skill(self, skill_id: SkillId) -> List[SkillComponentType]: + def fetch_by_skill(self, skill_id: PublicId) -> List[SkillComponentType]: """Fetch all the items of a given skill.""" temp: Optional[Dict[str, SkillComponentType]] = self._items.fetch(skill_id) name_to_item: Dict[str, SkillComponentType] = {} if temp is None else temp @@ -444,7 +438,7 @@ def fetch_all(self) -> List[SkillComponentType]: """Fetch all the items.""" return [item for items in self._items.fetch_all() for item in items.values()] - def unregister_by_skill(self, skill_id: SkillId) -> None: + def unregister_by_skill(self, skill_id: PublicId) -> None: """Unregister all the components by skill.""" if skill_id not in self._items.ids(): raise ValueError( @@ -453,9 +447,9 @@ def unregister_by_skill(self, skill_id: SkillId) -> None: self._items.unregister(skill_id) self._dynamically_added.pop(skill_id, None) - def ids(self) -> Set[Tuple[SkillId, str]]: + def ids(self) -> Set[Tuple[PublicId, str]]: """Get the item ids.""" - result: Set[Tuple[SkillId, str]] = set() + result: Set[Tuple[PublicId, str]] = set() for skill_id in self._items.ids(): name_to_item = cast( Dict[str, SkillComponentType], self._items.fetch(skill_id) @@ -526,7 +520,7 @@ def __init__(self, **kwargs) -> None: def register( self, - item_id: Tuple[SkillId, str], + item_id: Tuple[PublicId, str], item: Handler, is_dynamically_added: bool = False, ) -> None: @@ -569,7 +563,7 @@ def register( registry.register(skill_id, item) super().register(item_id, item, is_dynamically_added=is_dynamically_added) - def unregister(self, item_id: Tuple[SkillId, str]) -> None: + def unregister(self, item_id: Tuple[PublicId, str]) -> None: """ Unregister a item. @@ -581,7 +575,7 @@ def unregister(self, item_id: Tuple[SkillId, str]) -> None: handler = super()._unregister_from_main_index(item_id) # remove from index by protocol and skill - protocol_id = cast(ProtocolId, handler.SUPPORTED_PROTOCOL) + protocol_id = cast(PublicId, handler.SUPPORTED_PROTOCOL) protocol_handlers_by_skill = cast( PublicIdRegistry, self._items_by_protocol_and_skill.fetch(protocol_id) ) @@ -589,7 +583,7 @@ def unregister(self, item_id: Tuple[SkillId, str]) -> None: if len(protocol_handlers_by_skill.ids()) == 0: self._items_by_protocol_and_skill.unregister(protocol_id) - def unregister_by_skill(self, skill_id: SkillId) -> None: + def unregister_by_skill(self, skill_id: PublicId) -> None: """Unregister all the components by skill.""" # unregister from the main index. if skill_id not in self._items.ids(): @@ -604,7 +598,7 @@ def unregister_by_skill(self, skill_id: SkillId) -> None: # unregister from the protocol-skill index for handler in handlers: - protocol_id = cast(ProtocolId, handler.SUPPORTED_PROTOCOL) + protocol_id = cast(PublicId, handler.SUPPORTED_PROTOCOL) if protocol_id in self._items_by_protocol_and_skill.ids(): skill_id_to_handler = cast( PublicIdRegistry, @@ -612,7 +606,7 @@ def unregister_by_skill(self, skill_id: SkillId) -> None: ) skill_id_to_handler.unregister(skill_id) - def fetch_by_protocol(self, protocol_id: ProtocolId) -> List[Handler]: + def fetch_by_protocol(self, protocol_id: PublicId) -> List[Handler]: """ Fetch the handler by the pair protocol id and skill id. @@ -632,7 +626,7 @@ def fetch_by_protocol(self, protocol_id: ProtocolId) -> List[Handler]: return handlers def fetch_by_protocol_and_skill( - self, protocol_id: ProtocolId, skill_id: SkillId + self, protocol_id: PublicId, skill_id: PublicId ) -> Optional[Handler]: """ Fetch the handler by the pair protocol id and skill id. diff --git a/aea/registries/filter.py b/aea/registries/filter.py index 8add2fc25d..6bc30ebfb8 100644 --- a/aea/registries/filter.py +++ b/aea/registries/filter.py @@ -20,7 +20,7 @@ from typing import List, Optional -from aea.configurations.base import PublicId, SkillId +from aea.configurations.base import PublicId from aea.helpers.async_friendly_queue import AsyncFriendlyQueue from aea.helpers.logging import WithLogger, get_logger from aea.protocols.base import Message @@ -56,7 +56,7 @@ def decision_maker_out_queue(self) -> AsyncFriendlyQueue: return self._decision_maker_out_queue def get_active_handlers( - self, protocol_id: PublicId, skill_id: Optional[SkillId] = None + self, protocol_id: PublicId, skill_id: Optional[PublicId] = None ) -> List[Handler]: """ Get active handlers based on protocol id and optional skill id. diff --git a/aea/registries/resources.py b/aea/registries/resources.py index 813a8d3336..e2eac2020d 100644 --- a/aea/registries/resources.py +++ b/aea/registries/resources.py @@ -22,13 +22,7 @@ from typing import List, Optional, cast from aea.components.base import Component -from aea.configurations.base import ( - ComponentId, - ComponentType, - ConnectionId, - ContractId, - SkillId, -) +from aea.configurations.base import ComponentId, ComponentType, PublicId from aea.connections.base import Connection from aea.contracts.base import Contract from aea.protocols.base import Protocol @@ -36,7 +30,6 @@ AgentComponentRegistry, ComponentRegistry, HandlerRegistry, - ProtocolId, Registry, ) from aea.skills.base import Behaviour, Handler, Model, Skill @@ -115,7 +108,7 @@ def add_protocol(self, protocol: Protocol) -> None: """ self._component_registry.register(protocol.component_id, protocol) - def get_protocol(self, protocol_id: ProtocolId) -> Optional[Protocol]: + def get_protocol(self, protocol_id: PublicId) -> Optional[Protocol]: """ Get protocol for given protocol id. @@ -136,7 +129,7 @@ def get_all_protocols(self) -> List[Protocol]: protocols = self._component_registry.fetch_by_type(ComponentType.PROTOCOL) return cast(List[Protocol], protocols) - def remove_protocol(self, protocol_id: ProtocolId) -> None: + def remove_protocol(self, protocol_id: PublicId) -> None: """ Remove a protocol from the set of resources. @@ -156,7 +149,7 @@ def add_contract(self, contract: Contract) -> None: """ self._component_registry.register(contract.component_id, contract) - def get_contract(self, contract_id: ContractId) -> Optional[Contract]: + def get_contract(self, contract_id: PublicId) -> Optional[Contract]: """ Get contract for given contract id. @@ -177,7 +170,7 @@ def get_all_contracts(self) -> List[Contract]: contracts = self._component_registry.fetch_by_type(ComponentType.CONTRACT) return cast(List[Contract], contracts) - def remove_contract(self, contract_id: ContractId) -> None: + def remove_contract(self, contract_id: PublicId) -> None: """ Remove a contract from the set of resources. @@ -197,7 +190,7 @@ def add_connection(self, connection: Connection) -> None: """ self._component_registry.register(connection.component_id, connection) - def get_connection(self, connection_id: ConnectionId) -> Optional[Connection]: + def get_connection(self, connection_id: PublicId) -> Optional[Connection]: """ Get connection for given connection id. @@ -218,7 +211,7 @@ def get_all_connections(self) -> List[Connection]: connections = self._component_registry.fetch_by_type(ComponentType.CONNECTION) return cast(List[Connection], connections) - def remove_connection(self, connection_id: ConnectionId) -> None: + def remove_connection(self, connection_id: PublicId) -> None: """ Remove a connection from the set of resources. @@ -251,7 +244,7 @@ def add_skill(self, skill: Skill) -> None: for model in skill.models.values(): self._model_registry.register((skill.public_id, model.name), model) - def get_skill(self, skill_id: SkillId) -> Optional[Skill]: + def get_skill(self, skill_id: PublicId) -> Optional[Skill]: """ Get the skill for a given skill id. @@ -272,7 +265,7 @@ def get_all_skills(self) -> List[Skill]: skills = self._component_registry.fetch_by_type(ComponentType.SKILL) return cast(List[Skill], skills) - def remove_skill(self, skill_id: SkillId) -> None: + def remove_skill(self, skill_id: PublicId) -> None: """ Remove a skill from the set of resources. @@ -288,7 +281,7 @@ def remove_skill(self, skill_id: SkillId) -> None: self._model_registry.unregister_by_skill(skill_id) def get_handler( - self, protocol_id: ProtocolId, skill_id: SkillId + self, protocol_id: PublicId, skill_id: PublicId ) -> Optional[Handler]: """ Get a specific handler. @@ -302,7 +295,7 @@ def get_handler( ) return handler - def get_handlers(self, protocol_id: ProtocolId) -> List[Handler]: + def get_handlers(self, protocol_id: PublicId) -> List[Handler]: """ Get all handlers for a given protocol. @@ -322,7 +315,7 @@ def get_all_handlers(self) -> List[Handler]: return handlers def get_behaviour( - self, skill_id: SkillId, behaviour_name: str + self, skill_id: PublicId, behaviour_name: str ) -> Optional[Behaviour]: """ Get a specific behaviours for a given skill. @@ -334,7 +327,7 @@ def get_behaviour( behaviour = self._behaviour_registry.fetch((skill_id, behaviour_name)) return behaviour - def get_behaviours(self, skill_id: SkillId) -> List[Behaviour]: + def get_behaviours(self, skill_id: PublicId) -> List[Behaviour]: """ Get all behaviours for a given skill. diff --git a/aea/skills/base.py b/aea/skills/base.py index 7c97f7c731..9d60c3bff9 100644 --- a/aea/skills/base.py +++ b/aea/skills/base.py @@ -35,7 +35,6 @@ from aea.components.base import Component, load_aea_package from aea.configurations.base import ( ComponentType, - ProtocolId, PublicId, SkillComponentConfiguration, SkillConfig, @@ -437,7 +436,7 @@ def parse_module( # pylint: disable=arguments-differ class Handler(SkillComponent, ABC): """This class implements an abstract behaviour.""" - SUPPORTED_PROTOCOL = None # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = None # type: Optional[PublicId] @abstractmethod def handle(self, message: Message) -> None: diff --git a/aea/skills/error/handlers.py b/aea/skills/error/handlers.py index c6f34207d8..666d0bf74d 100644 --- a/aea/skills/error/handlers.py +++ b/aea/skills/error/handlers.py @@ -22,7 +22,7 @@ import base64 from typing import Optional -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.mail.base import Envelope from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage @@ -32,7 +32,7 @@ class ErrorHandler(Handler): """This class implements the error handler.""" - SUPPORTED_PROTOCOL = DefaultMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = DefaultMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """ diff --git a/aea/skills/error/skill.yaml b/aea/skills/error/skill.yaml index 2cae39beee..968eb79c10 100644 --- a/aea/skills/error/skill.yaml +++ b/aea/skills/error/skill.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: __init__.py: QmPGDeDxEZR4Fk4gD5a9a8Pm54NVQepTaZaVtDEuSMRYeN - handlers.py: QmU5PviCqLGX7h9nSAAjcSMs1xsLc8TckSu4KcnbLPCaBG + handlers.py: QmYu86xrL3mNj4zbDn5c43YGk7oxALZk7uQoe6R7H5ZpKi fingerprint_ignore_patterns: [] contracts: [] protocols: diff --git a/aea/skills/scaffold/handlers.py b/aea/skills/scaffold/handlers.py index 1ed480fead..d02a439c2b 100644 --- a/aea/skills/scaffold/handlers.py +++ b/aea/skills/scaffold/handlers.py @@ -21,7 +21,7 @@ from typing import Optional -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.protocols.base import Message from aea.skills.base import Handler @@ -29,7 +29,7 @@ class MyScaffoldHandler(Handler): """This class scaffolds a handler.""" - SUPPORTED_PROTOCOL = None # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = None # type: Optional[PublicId] def setup(self) -> None: """ diff --git a/aea/skills/scaffold/skill.yaml b/aea/skills/scaffold/skill.yaml index 978e024636..f6de1a83dd 100644 --- a/aea/skills/scaffold/skill.yaml +++ b/aea/skills/scaffold/skill.yaml @@ -8,7 +8,7 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: __init__.py: QmYRssFqDqb3uWDvfoXy93avisjKRx2yf9SbAQXnkRj1QB behaviours.py: QmNgDDAmBzWBeBF7e5gUCny38kdqVVfpvHGaAZVZcMtm9Q - handlers.py: QmUFLmnyph4sstd5vxq4Q7up8PVbVMctiiZi8EZMsK1Kj6 + handlers.py: QmTHd2YX941T76eS39SSdfiafXBYehL2oibugnVmmp4Tvy my_model.py: QmPaZ6G37Juk63mJj88nParaEp71XyURts8AmmX1axs24V fingerprint_ignore_patterns: [] contracts: [] diff --git a/docs/api/contracts/base.md b/docs/api/contracts/base.md index 9abd6965de..26b5bf1b80 100644 --- a/docs/api/contracts/base.md +++ b/docs/api/contracts/base.md @@ -30,7 +30,7 @@ Initialize the contract. ```python | @property - | id() -> ContractId + | id() -> PublicId ``` Get the name. diff --git a/docs/api/mail/base.md b/docs/api/mail/base.md index 77aff63feb..a146a66df4 100644 --- a/docs/api/mail/base.md +++ b/docs/api/mail/base.md @@ -340,7 +340,7 @@ The top level message class for agent to agent communication. #### `__`init`__` ```python - | __init__(to: Address, sender: Address, protocol_id: ProtocolId, message: Union[Message, bytes], context: Optional[EnvelopeContext] = None) + | __init__(to: Address, sender: Address, protocol_id: PublicId, message: Union[Message, bytes], context: Optional[EnvelopeContext] = None) ``` Initialize a Message object. @@ -398,7 +398,7 @@ Set address of sender. ```python | @property - | protocol_id() -> ProtocolId + | protocol_id() -> PublicId ``` Get protocol id. @@ -408,7 +408,7 @@ Get protocol id. ```python | @protocol_id.setter - | protocol_id(protocol_id: ProtocolId) -> None + | protocol_id(protocol_id: PublicId) -> None ``` Set the protocol id. diff --git a/docs/api/registries/base.md b/docs/api/registries/base.md index 71862594e5..83c92ca00d 100644 --- a/docs/api/registries/base.md +++ b/docs/api/registries/base.md @@ -367,7 +367,7 @@ None ```python class ComponentRegistry( - Registry[Tuple[SkillId, str], SkillComponentType], Generic[SkillComponentType]) + Registry[Tuple[PublicId, str], SkillComponentType], Generic[SkillComponentType]) ``` This class implements a generic registry for skill components. @@ -393,7 +393,7 @@ None #### register ```python - | register(item_id: Tuple[SkillId, str], item: SkillComponentType, is_dynamically_added: bool = False) -> None + | register(item_id: Tuple[PublicId, str], item: SkillComponentType, is_dynamically_added: bool = False) -> None ``` Register a item. @@ -413,7 +413,7 @@ None #### unregister ```python - | unregister(item_id: Tuple[SkillId, str]) -> None + | unregister(item_id: Tuple[PublicId, str]) -> None ``` Unregister a item. @@ -431,7 +431,7 @@ None #### fetch ```python - | fetch(item_id: Tuple[SkillId, str]) -> Optional[SkillComponentType] + | fetch(item_id: Tuple[PublicId, str]) -> Optional[SkillComponentType] ``` Fetch an item. @@ -448,7 +448,7 @@ the Item #### fetch`_`by`_`skill ```python - | fetch_by_skill(skill_id: SkillId) -> List[SkillComponentType] + | fetch_by_skill(skill_id: PublicId) -> List[SkillComponentType] ``` Fetch all the items of a given skill. @@ -466,7 +466,7 @@ Fetch all the items. #### unregister`_`by`_`skill ```python - | unregister_by_skill(skill_id: SkillId) -> None + | unregister_by_skill(skill_id: PublicId) -> None ``` Unregister all the components by skill. @@ -475,7 +475,7 @@ Unregister all the components by skill. #### ids ```python - | ids() -> Set[Tuple[SkillId, str]] + | ids() -> Set[Tuple[PublicId, str]] ``` Get the item ids. @@ -536,7 +536,7 @@ None #### register ```python - | register(item_id: Tuple[SkillId, str], item: Handler, is_dynamically_added: bool = False) -> None + | register(item_id: Tuple[PublicId, str], item: Handler, is_dynamically_added: bool = False) -> None ``` Register a handler. @@ -559,7 +559,7 @@ None #### unregister ```python - | unregister(item_id: Tuple[SkillId, str]) -> None + | unregister(item_id: Tuple[PublicId, str]) -> None ``` Unregister a item. @@ -577,7 +577,7 @@ None #### unregister`_`by`_`skill ```python - | unregister_by_skill(skill_id: SkillId) -> None + | unregister_by_skill(skill_id: PublicId) -> None ``` Unregister all the components by skill. @@ -586,7 +586,7 @@ Unregister all the components by skill. #### fetch`_`by`_`protocol ```python - | fetch_by_protocol(protocol_id: ProtocolId) -> List[Handler] + | fetch_by_protocol(protocol_id: PublicId) -> List[Handler] ``` Fetch the handler by the pair protocol id and skill id. @@ -603,7 +603,7 @@ the handlers registered for the protocol_id and skill_id #### fetch`_`by`_`protocol`_`and`_`skill ```python - | fetch_by_protocol_and_skill(protocol_id: ProtocolId, skill_id: SkillId) -> Optional[Handler] + | fetch_by_protocol_and_skill(protocol_id: PublicId, skill_id: PublicId) -> Optional[Handler] ``` Fetch the handler by the pair protocol id and skill id. diff --git a/docs/api/registries/filter.md b/docs/api/registries/filter.md index dee47ece22..28abadd6b6 100644 --- a/docs/api/registries/filter.md +++ b/docs/api/registries/filter.md @@ -50,7 +50,7 @@ Get decision maker (out) queue. #### get`_`active`_`handlers ```python - | get_active_handlers(protocol_id: PublicId, skill_id: Optional[SkillId] = None) -> List[Handler] + | get_active_handlers(protocol_id: PublicId, skill_id: Optional[PublicId] = None) -> List[Handler] ``` Get active handlers based on protocol id and optional skill id. diff --git a/docs/api/registries/resources.md b/docs/api/registries/resources.md index 50b5cb0759..092864fded 100644 --- a/docs/api/registries/resources.md +++ b/docs/api/registries/resources.md @@ -103,7 +103,7 @@ None #### get`_`protocol ```python - | get_protocol(protocol_id: ProtocolId) -> Optional[Protocol] + | get_protocol(protocol_id: PublicId) -> Optional[Protocol] ``` Get protocol for given protocol id. @@ -133,7 +133,7 @@ the list of protocols. #### remove`_`protocol ```python - | remove_protocol(protocol_id: ProtocolId) -> None + | remove_protocol(protocol_id: PublicId) -> None ``` Remove a protocol from the set of resources. @@ -167,7 +167,7 @@ None #### get`_`contract ```python - | get_contract(contract_id: ContractId) -> Optional[Contract] + | get_contract(contract_id: PublicId) -> Optional[Contract] ``` Get contract for given contract id. @@ -197,7 +197,7 @@ the list of contracts. #### remove`_`contract ```python - | remove_contract(contract_id: ContractId) -> None + | remove_contract(contract_id: PublicId) -> None ``` Remove a contract from the set of resources. @@ -231,7 +231,7 @@ None #### get`_`connection ```python - | get_connection(connection_id: ConnectionId) -> Optional[Connection] + | get_connection(connection_id: PublicId) -> Optional[Connection] ``` Get connection for given connection id. @@ -261,7 +261,7 @@ the list of connections. #### remove`_`connection ```python - | remove_connection(connection_id: ConnectionId) -> None + | remove_connection(connection_id: PublicId) -> None ``` Remove a connection from the set of resources. @@ -295,7 +295,7 @@ None #### get`_`skill ```python - | get_skill(skill_id: SkillId) -> Optional[Skill] + | get_skill(skill_id: PublicId) -> Optional[Skill] ``` Get the skill for a given skill id. @@ -325,7 +325,7 @@ the list of skills. #### remove`_`skill ```python - | remove_skill(skill_id: SkillId) -> None + | remove_skill(skill_id: PublicId) -> None ``` Remove a skill from the set of resources. @@ -342,7 +342,7 @@ None #### get`_`handler ```python - | get_handler(protocol_id: ProtocolId, skill_id: SkillId) -> Optional[Handler] + | get_handler(protocol_id: PublicId, skill_id: PublicId) -> Optional[Handler] ``` Get a specific handler. @@ -360,7 +360,7 @@ the handler #### get`_`handlers ```python - | get_handlers(protocol_id: ProtocolId) -> List[Handler] + | get_handlers(protocol_id: PublicId) -> List[Handler] ``` Get all handlers for a given protocol. @@ -390,7 +390,7 @@ the list of handlers #### get`_`behaviour ```python - | get_behaviour(skill_id: SkillId, behaviour_name: str) -> Optional[Behaviour] + | get_behaviour(skill_id: PublicId, behaviour_name: str) -> Optional[Behaviour] ``` Get a specific behaviours for a given skill. @@ -408,7 +408,7 @@ the behaviour, if it is present, else None #### get`_`behaviours ```python - | get_behaviours(skill_id: SkillId) -> List[Behaviour] + | get_behaviours(skill_id: PublicId) -> List[Behaviour] ``` Get all behaviours for a given skill. diff --git a/docs/decision-maker-transaction.md b/docs/decision-maker-transaction.md index 0df4924197..b9501fc9bf 100644 --- a/docs/decision-maker-transaction.md +++ b/docs/decision-maker-transaction.md @@ -9,7 +9,7 @@ from threading import Thread from typing import Optional, cast from aea.aea_builder import AEABuilder -from aea.configurations.base import ProtocolId, SkillConfig +from aea.configurations.base import PublicId, SkillConfig from aea.crypto.fetchai import FetchAICrypto from aea.crypto.helpers import create_private_key from aea.crypto.ledger_apis import LedgerApis @@ -189,7 +189,7 @@ class SigningDialogues(Model, BaseSigningDialogues): class SigningHandler(Handler): """Implement the signing handler.""" - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -298,7 +298,7 @@ from threading import Thread from typing import Optional, cast from aea.aea_builder import AEABuilder -from aea.configurations.base import ProtocolId, SkillConfig +from aea.configurations.base import PublicId, SkillConfig from aea.crypto.fetchai import FetchAICrypto from aea.crypto.helpers import create_private_key from aea.crypto.ledger_apis import LedgerApis @@ -451,7 +451,7 @@ class SigningDialogues(Model, BaseSigningDialogues): class SigningHandler(Handler): """Implement the signing handler.""" - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" diff --git a/docs/generic-skills-step-by-step.md b/docs/generic-skills-step-by-step.md index 65d2862edb..27841f98a4 100644 --- a/docs/generic-skills-step-by-step.md +++ b/docs/generic-skills-step-by-step.md @@ -292,7 +292,7 @@ Let us now implement a `Handler` None: """Implement the setup for the handler.""" @@ -590,7 +590,7 @@ The remaining handlers are as follows: class GenericLedgerApiHandler(Handler): """Implement the ledger handler.""" - SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -744,7 +744,7 @@ class GenericLedgerApiHandler(Handler): class GenericOefSearchHandler(Handler): """This class implements an OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" @@ -1494,7 +1494,7 @@ Let us now implement a `Handler` None: """ @@ -1776,7 +1776,7 @@ To handle the messages in the `oef_search` protocol used by the None: """Call to setup the handler.""" @@ -1907,7 +1907,7 @@ The last handlers we need are the `GenericSigningHandler` and the `GenericLedger class GenericSigningHandler(Handler): """Implement the signing handler.""" - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -2019,7 +2019,7 @@ class GenericSigningHandler(Handler): class GenericLedgerApiHandler(Handler): """Implement the ledger handler.""" - SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" diff --git a/docs/skill-guide.md b/docs/skill-guide.md index b009f27a4d..391399e71f 100644 --- a/docs/skill-guide.md +++ b/docs/skill-guide.md @@ -683,7 +683,7 @@ Finally, we have a handler, placed in `handlers.py`: ``` python from typing import Optional, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.protocols.base import Message from aea.skills.base import Handler @@ -699,7 +699,7 @@ LEDGER_API_ADDRESS = "fetchai/ledger:0.7.0" class OefSearchHandler(Handler): """This class implements an OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" diff --git a/packages/fetchai/protocols/contract_api/message.py b/packages/fetchai/protocols/contract_api/message.py index 8f7298b1f4..cd78d3acd0 100644 --- a/packages/fetchai/protocols/contract_api/message.py +++ b/packages/fetchai/protocols/contract_api/message.py @@ -22,7 +22,7 @@ import logging from typing import Optional, Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -46,7 +46,7 @@ class ContractApiMessage(Message): """A protocol for contract APIs requests and responses.""" - protocol_id = ProtocolId.from_str("fetchai/contract_api:0.6.0") + protocol_id = PublicId.from_str("fetchai/contract_api:0.6.0") Kwargs = CustomKwargs diff --git a/packages/fetchai/protocols/contract_api/protocol.yaml b/packages/fetchai/protocols/contract_api/protocol.yaml index 7d9ef6e078..17b93adba5 100644 --- a/packages/fetchai/protocols/contract_api/protocol.yaml +++ b/packages/fetchai/protocols/contract_api/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: contract_api_pb2.py: QmVT6Fv53KyFhshNFEo38seHypd7Y62psBaF8NszV8iRHK custom_types.py: QmcMtzozPhcL2H9hDmnUd9bHDE3ihy7HQgvGKkhqxdAXf4 dialogues.py: QmTjXH8JUtziUFDawKsSTYE5dxn1n1FmMPeWexyxiPYd6k - message.py: QmWqJTFiycWzCtSGBMshbt8EMeEvp54PQ6vxTUFKeM1wCJ + message.py: QmVsYVuGSymX56k7wophqpyzU8pwKF1vmipQQFYgXuxUFb serialization.py: QmQzS931wTQNt758wvnB81aD16hUMQ19WVK6f1p1XuEwUp fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/fipa/message.py b/packages/fetchai/protocols/fipa/message.py index 6d43a2a647..b000da76a9 100644 --- a/packages/fetchai/protocols/fipa/message.py +++ b/packages/fetchai/protocols/fipa/message.py @@ -22,7 +22,7 @@ import logging from typing import Dict, Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -40,7 +40,7 @@ class FipaMessage(Message): """A protocol for FIPA ACL.""" - protocol_id = ProtocolId.from_str("fetchai/fipa:0.8.0") + protocol_id = PublicId.from_str("fetchai/fipa:0.8.0") Description = CustomDescription diff --git a/packages/fetchai/protocols/fipa/protocol.yaml b/packages/fetchai/protocols/fipa/protocol.yaml index ea20f3d715..65a85334cd 100644 --- a/packages/fetchai/protocols/fipa/protocol.yaml +++ b/packages/fetchai/protocols/fipa/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: dialogues.py: QmWaciW35ZTVeTeLWeyp3hjehKkWB5ZY7Di8N8cDH8Mjwb fipa.proto: QmP7JqnuQSQ9BDcKkscrTydKEX4wFBoyFaY1bkzGkamcit fipa_pb2.py: QmZMkefJLrb3zJKoimb6a9tdpxDBhc8rR2ghimqg7gZ471 - message.py: QmRM7yKj2bJCq3bgqFGotU1YVnX6FLP2VYj9vTLNuiTjG2 + message.py: QmS3LY8BqetznTkK8Wc1wChZJcoKJCjFGq3gCWoCHbxh94 serialization.py: QmQMb8F8hJm1gkJFSPPCtDAoxSX3bFkshtzRgDWfWB8ynd fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/gym/message.py b/packages/fetchai/protocols/gym/message.py index a597e22c5b..eebc3297aa 100644 --- a/packages/fetchai/protocols/gym/message.py +++ b/packages/fetchai/protocols/gym/message.py @@ -22,7 +22,7 @@ import logging from typing import Dict, Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -37,7 +37,7 @@ class GymMessage(Message): """A protocol for interacting with a gym connection.""" - protocol_id = ProtocolId.from_str("fetchai/gym:0.7.0") + protocol_id = PublicId.from_str("fetchai/gym:0.7.0") AnyObject = CustomAnyObject diff --git a/packages/fetchai/protocols/gym/protocol.yaml b/packages/fetchai/protocols/gym/protocol.yaml index 3fcf977885..8ae67d5aa5 100644 --- a/packages/fetchai/protocols/gym/protocol.yaml +++ b/packages/fetchai/protocols/gym/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: dialogues.py: QmdCzcFfyPF43U2SoxwshG5p4hd6dK49m6GYKduDHbnNPo gym.proto: QmQGF9Xz4Z93wmhdKoztzxjo5pS4SsAWe2TQdvZCLuzdGC gym_pb2.py: QmSTz7xrL8ryqzR1Sgu1NpR6PmW7GUhBGnN2qYc8m8NCcN - message.py: Qme6webfcfiVa3sCb9WpV6mGVLudS9YTx4tWmEbnwr1qLx + message.py: QmWnLRvMdrinZSHojvrn4df21bNj1S3QmYpi1GAu2c6iDS serialization.py: QmPNsgeGkagzQuAyq97fcGXA2LoPwiuq8X1tcfVXoLwnSV fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/http/message.py b/packages/fetchai/protocols/http/message.py index 3dc9b5e469..ee10fa083a 100644 --- a/packages/fetchai/protocols/http/message.py +++ b/packages/fetchai/protocols/http/message.py @@ -22,7 +22,7 @@ import logging from typing import Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -35,7 +35,7 @@ class HttpMessage(Message): """A protocol for HTTP requests and responses.""" - protocol_id = ProtocolId.from_str("fetchai/http:0.7.0") + protocol_id = PublicId.from_str("fetchai/http:0.7.0") class Performative(Message.Performative): """Performatives for the http protocol.""" diff --git a/packages/fetchai/protocols/http/protocol.yaml b/packages/fetchai/protocols/http/protocol.yaml index b7aa67fa50..cb5e6c689d 100644 --- a/packages/fetchai/protocols/http/protocol.yaml +++ b/packages/fetchai/protocols/http/protocol.yaml @@ -11,7 +11,7 @@ fingerprint: dialogues.py: QmdwTehjCppcxyDid8m6zuHY5YwprUhato88R9Zdm9aXaM http.proto: QmdTUTvvxGxMxSTB67AXjMUSDLdsxBYiSuJNVxHuLKB1jS http_pb2.py: QmYYKqdwiueq54EveL9WXn216FXLSQ6XGJJHoiJxwJjzHC - message.py: QmQ9V7Q36bxz14y8YhUJgGSBCABrEfwzYt4YaGzK1DakTw + message.py: QmQefjzJZezahLk4CMLHceqvVmRpzFHmndiwGuxHZTeoL9 serialization.py: QmTq34k2PD6Ybhk8x1EboY3UcNp8r3H6Tb3egZsWJN9nFv fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/ledger_api/message.py b/packages/fetchai/protocols/ledger_api/message.py index 787b256cb4..ee0d11f2f4 100644 --- a/packages/fetchai/protocols/ledger_api/message.py +++ b/packages/fetchai/protocols/ledger_api/message.py @@ -22,7 +22,7 @@ import logging from typing import Optional, Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -49,7 +49,7 @@ class LedgerApiMessage(Message): """A protocol for ledger APIs requests and responses.""" - protocol_id = ProtocolId.from_str("fetchai/ledger_api:0.5.0") + protocol_id = PublicId.from_str("fetchai/ledger_api:0.5.0") RawTransaction = CustomRawTransaction diff --git a/packages/fetchai/protocols/ledger_api/protocol.yaml b/packages/fetchai/protocols/ledger_api/protocol.yaml index bd265aa141..8c812ab300 100644 --- a/packages/fetchai/protocols/ledger_api/protocol.yaml +++ b/packages/fetchai/protocols/ledger_api/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: dialogues.py: QmRtWkAfR9WTvygMJ36R758RzdY2mGQs2fgtHCfjxmeaHy ledger_api.proto: QmfLcv7jJcGJ1gAdCMqsyxJcRud7RaTWteSXHL5NvGuViP ledger_api_pb2.py: QmQhM848REJTDKDoiqxkTniChW8bNNm66EtwMRkvVdbMry - message.py: QmTZ6meh1Rcqi7mXDSWYQs4PyuEuEZSLrgvMYq7nyBLgE4 + message.py: QmSWy7hYTHBZe34Z8WAbBzydXn6Wgk9Z5ULnDRx4yDu5cX serialization.py: QmRuTqH9t9JtsnpWX5wpC438DdRxWKiqAB2u9fvQ2oy1GE fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/ml_trade/message.py b/packages/fetchai/protocols/ml_trade/message.py index b5fa56f23f..b035f9b7fe 100644 --- a/packages/fetchai/protocols/ml_trade/message.py +++ b/packages/fetchai/protocols/ml_trade/message.py @@ -22,7 +22,7 @@ import logging from typing import Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -40,7 +40,7 @@ class MlTradeMessage(Message): """A protocol for trading data for training and prediction purposes.""" - protocol_id = ProtocolId.from_str("fetchai/ml_trade:0.7.0") + protocol_id = PublicId.from_str("fetchai/ml_trade:0.7.0") Description = CustomDescription diff --git a/packages/fetchai/protocols/ml_trade/protocol.yaml b/packages/fetchai/protocols/ml_trade/protocol.yaml index ee329cb2a4..cf2c831e74 100644 --- a/packages/fetchai/protocols/ml_trade/protocol.yaml +++ b/packages/fetchai/protocols/ml_trade/protocol.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: QmcCS9uUQTTS2w85dTNiN5rQ14wyBhmBkr7pPPPcbLphcn custom_types.py: QmPa6mxbN8WShsniQxJACfzAPRjGzYLbUFGoVU4N9DewUw dialogues.py: QmVvP34aKWEtHrKmccNMvEdDnx5B7xpE5aEGzr6GU2u8UK - message.py: QmPHXQv2ta71kW9Q4sy6zj1zVTqGSF4KjFG1VZsAxNNADo + message.py: QmRngQrA8xB3DTFeGFdijkNgNEmjNAgb1wUZCF7pXRqSf3 ml_trade.proto: QmeB21MQduEGQCrtiYZQzPpRqHL4CWEkvvcaKZ9GsfE8f6 ml_trade_pb2.py: QmZVvugPysR1og6kWCJkvo3af2s9pQRHfuj4BptE7gU1EU serialization.py: QmTamQzo8ZNM6T7QnsA7qNzs2uJ7CHTUczzCsHwU9Q6Z5K diff --git a/packages/fetchai/protocols/oef_search/message.py b/packages/fetchai/protocols/oef_search/message.py index 0374e09dc8..fcd3344abb 100644 --- a/packages/fetchai/protocols/oef_search/message.py +++ b/packages/fetchai/protocols/oef_search/message.py @@ -22,7 +22,7 @@ import logging from typing import Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -46,7 +46,7 @@ class OefSearchMessage(Message): """A protocol for interacting with an OEF search service.""" - protocol_id = ProtocolId.from_str("fetchai/oef_search:0.8.0") + protocol_id = PublicId.from_str("fetchai/oef_search:0.8.0") AgentsInfo = CustomAgentsInfo diff --git a/packages/fetchai/protocols/oef_search/protocol.yaml b/packages/fetchai/protocols/oef_search/protocol.yaml index 5a7aa6aab6..766b2407a2 100644 --- a/packages/fetchai/protocols/oef_search/protocol.yaml +++ b/packages/fetchai/protocols/oef_search/protocol.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: Qmdr5ks5X4YtnpH6yKUcNu9uouyv3EGmrKFhyvNH7ZBjvT custom_types.py: QmYAkKYj9gGHaij7uTejoJe9KRhNcsU4sJC1utMfhUYhg3 dialogues.py: QmQPLnW3jAs6tLLmhkX4C7texGRHM9bfdjs83dUH5TkJ4v - message.py: QmZfLEzhveXqvWLuwQUoAxCarRgahsxkkHVtYEhv3LLKLw + message.py: QmVoHJgficKvL1kZiVhpEEtzfrZjLVPr3wpURAj9qmQZNM oef_search.proto: QmNU8WsxT6XNFFneKKeDaZkNn3CEFDfZQkmKv9TyhyxzDB oef_search_pb2.py: QmSAFT1xxYRzJU6h1aFVDuYcx672sZ2vzV6c2ico7f4BLK serialization.py: QmU3ipyvogbpkFuQki6xqscdiPahDVYw4sBaPHaH3LVvwJ diff --git a/packages/fetchai/protocols/tac/message.py b/packages/fetchai/protocols/tac/message.py index cf6d759a69..0e682270fd 100644 --- a/packages/fetchai/protocols/tac/message.py +++ b/packages/fetchai/protocols/tac/message.py @@ -22,7 +22,7 @@ import logging from typing import Dict, Optional, Set, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -37,7 +37,7 @@ class TacMessage(Message): """The tac protocol implements the messages an AEA needs to participate in the TAC.""" - protocol_id = ProtocolId.from_str("fetchai/tac:0.8.0") + protocol_id = PublicId.from_str("fetchai/tac:0.8.0") ErrorCode = CustomErrorCode diff --git a/packages/fetchai/protocols/tac/protocol.yaml b/packages/fetchai/protocols/tac/protocol.yaml index 9ee1d4ab62..64c4cfc21d 100644 --- a/packages/fetchai/protocols/tac/protocol.yaml +++ b/packages/fetchai/protocols/tac/protocol.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmSAC7PGra9fig8RhhF1j3XEVpgie9UZNNYPc2AB9Kx9xJ custom_types.py: QmXQATfnvuCpt4FicF4QcqCcLj9PQNsSHjCBvVQknWpyaN dialogues.py: QmQvuivrjhVFu7pjSFfv6FrWwVeBC7p8Hm3P4gjCnVx5Ym - message.py: QmZyNfMH3tfhfCCsAMRpxQkkGcqjezzdSqTSkvsbVA6fWy + message.py: QmTgfpESsiKdtHphF1fFMz39T6DsFushuE4W5tLpB9q6yv serialization.py: QmTk2Jp19dQ4SJdjSHAr8wbxw4rQSMheSuf1XzXG8CaoB4 tac.proto: QmdpPZNhUW593qVNVoSTWZgd9R69bmBbw6Y9xjzYpvuDvV tac_pb2.py: QmUwW3kixKwD2o1RRdq4NoNoihPb5BXKKRngWXztq32fea diff --git a/packages/fetchai/skills/aries_alice/handlers.py b/packages/fetchai/skills/aries_alice/handlers.py index 5bb7f3b52b..5fe71fa805 100644 --- a/packages/fetchai/skills/aries_alice/handlers.py +++ b/packages/fetchai/skills/aries_alice/handlers.py @@ -25,7 +25,7 @@ from typing import Dict, Optional, cast from urllib.parse import urlparse -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage from aea.skills.base import Handler @@ -49,7 +49,7 @@ class AliceDefaultHandler(Handler): """This class represents alice's handler for default messages.""" - SUPPORTED_PROTOCOL = DefaultMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = DefaultMessage.protocol_id # type: Optional[PublicId] def __init__(self, **kwargs): """Initialize the handler.""" @@ -151,7 +151,7 @@ def teardown(self) -> None: class AliceHttpHandler(Handler): """This class represents alice's handler for HTTP messages.""" - SUPPORTED_PROTOCOL = HttpMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = HttpMessage.protocol_id # type: Optional[PublicId] def __init__(self, **kwargs): """Initialize the handler.""" @@ -235,7 +235,7 @@ def teardown(self) -> None: class AliceOefSearchHandler(Handler): """This class implements an OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" diff --git a/packages/fetchai/skills/aries_alice/skill.yaml b/packages/fetchai/skills/aries_alice/skill.yaml index 87379d0192..8094ceda9f 100644 --- a/packages/fetchai/skills/aries_alice/skill.yaml +++ b/packages/fetchai/skills/aries_alice/skill.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmcP4spDi6uMHASQD3nEMijNXfftvDyC4pGSvzjFsGAjtf behaviours.py: QmTdJbrP1N3W1M6CLDyPFc6erfcrhnbRJtDNN6ZuY9eRUt dialogues.py: QmbCkYZ9mQK6az3qWVMuYmpy5bapq2szYigUbVzE2GgiJi - handlers.py: QmTtqM5oWBEAZcHdTuwuPtbiZZGWontMNEtmDxcccS2u2Y + handlers.py: QmWJ1ynrfZyPGKpEiZU6pcKfe7WMMCDShmK4v1gSrB9EBe strategy.py: QmPUPJvc9idv1KeJE67PKze4E6TpSzjkvFjPG1FRMPAhaL fingerprint_ignore_patterns: [] contracts: [] diff --git a/packages/fetchai/skills/aries_faber/handlers.py b/packages/fetchai/skills/aries_faber/handlers.py index 76c395f34b..86034bc3ed 100644 --- a/packages/fetchai/skills/aries_faber/handlers.py +++ b/packages/fetchai/skills/aries_faber/handlers.py @@ -23,7 +23,7 @@ import random from typing import Dict, Optional, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.mail.base import EnvelopeContext from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage @@ -58,7 +58,7 @@ class FaberHTTPHandler(Handler): """This class represents faber's handler for default messages.""" - SUPPORTED_PROTOCOL = HttpMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = HttpMessage.protocol_id # type: Optional[PublicId] def __init__(self, **kwargs): """Initialize the handler.""" @@ -259,7 +259,7 @@ def teardown(self) -> None: class FaberOefSearchHandler(Handler): """This class implements an OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" diff --git a/packages/fetchai/skills/aries_faber/skill.yaml b/packages/fetchai/skills/aries_faber/skill.yaml index d012e99f16..b22107db65 100644 --- a/packages/fetchai/skills/aries_faber/skill.yaml +++ b/packages/fetchai/skills/aries_faber/skill.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmRB8ZTyM23HnkV5yA81YgqaRvL8uCsSVqGksTt49YUh73 behaviours.py: QmQUmnhHmEFjGp9SvkLqcBrmCe2CSFngzqTHNadqJXQMgw dialogues.py: Qmeynv4h5ArYBJ2wkQurW7VXdDP1VXNbg5GiADkgMPFqj3 - handlers.py: QmXpCVgMTLyewXPmXMmPHUpnZhQZ35GFAhZtcpujAd3WZ8 + handlers.py: Qma81y9fa8PYDfVmGMHxKjWcDc99GG8fxKPdLwiXSHmUkX strategy.py: QmdcUrzKHX2CAe1zXRpoFBzj4vSmqGjuhh8MaRmBSpx8gi fingerprint_ignore_patterns: [] contracts: [] diff --git a/packages/fetchai/skills/erc1155_client/handlers.py b/packages/fetchai/skills/erc1155_client/handlers.py index 312f600c3c..d8de2ccc00 100644 --- a/packages/fetchai/skills/erc1155_client/handlers.py +++ b/packages/fetchai/skills/erc1155_client/handlers.py @@ -21,7 +21,7 @@ from typing import Optional, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.helpers.transaction.base import RawMessage, Terms from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage @@ -54,7 +54,7 @@ class FipaHandler(Handler): """This class implements a FIPA handler.""" - SUPPORTED_PROTOCOL = FipaMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = FipaMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """ @@ -217,7 +217,7 @@ def _handle_invalid( class OefSearchHandler(Handler): """This class implements an OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" @@ -344,7 +344,7 @@ def _handle_invalid( class ContractApiHandler(Handler): """Implement the contract api handler.""" - SUPPORTED_PROTOCOL = ContractApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = ContractApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -469,7 +469,7 @@ def _handle_invalid( class SigningHandler(Handler): """Implement the transaction handler.""" - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -585,7 +585,7 @@ def _handle_invalid( class LedgerApiHandler(Handler): """Implement the ledger api handler.""" - SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" diff --git a/packages/fetchai/skills/erc1155_client/skill.yaml b/packages/fetchai/skills/erc1155_client/skill.yaml index 02961b9240..494316e583 100644 --- a/packages/fetchai/skills/erc1155_client/skill.yaml +++ b/packages/fetchai/skills/erc1155_client/skill.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmcHGjFj9XfbSWJcTfsy4auEX8AtLSy2M1YUCWVi1VRaVX behaviours.py: QmTWQLqGHrZ8zG9cPnpXRjG6xnLUno1oGGw6nR297Rbync dialogues.py: QmPb2odXbXxuY5Ygm9mfCufM2mtMZ23oapsAzsWHC2x2k4 - handlers.py: Qmc1yfcjDravS6KL8xrHmpHKNs1xtdoZ6XEPuLurwQmw3s + handlers.py: QmagzT3FWhoAFAUrs5U5E3oXSGTuPpnDW9dkfqdbut7tBG strategy.py: QmTdapKSrFEZJkpmqrVeVSqF6MyRgNA6NeLhPByoxRF1V9 fingerprint_ignore_patterns: [] contracts: diff --git a/packages/fetchai/skills/erc1155_deploy/handlers.py b/packages/fetchai/skills/erc1155_deploy/handlers.py index 4bcd8bf200..5a51a51a88 100644 --- a/packages/fetchai/skills/erc1155_deploy/handlers.py +++ b/packages/fetchai/skills/erc1155_deploy/handlers.py @@ -21,7 +21,7 @@ from typing import Optional, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.crypto.ledger_apis import LedgerApis from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage @@ -54,7 +54,7 @@ class FipaHandler(Handler): """This class implements a FIPA handler.""" - SUPPORTED_PROTOCOL = FipaMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = FipaMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -225,7 +225,7 @@ def _handle_invalid( class LedgerApiHandler(Handler): """Implement the ledger api handler.""" - SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -399,7 +399,7 @@ def _handle_invalid( class ContractApiHandler(Handler): """Implement the contract api handler.""" - SUPPORTED_PROTOCOL = ContractApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = ContractApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -523,7 +523,7 @@ def _handle_invalid( class SigningHandler(Handler): """Implement the transaction handler.""" - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -635,7 +635,7 @@ def _handle_invalid( class OefSearchHandler(Handler): """This class implements an OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" diff --git a/packages/fetchai/skills/erc1155_deploy/skill.yaml b/packages/fetchai/skills/erc1155_deploy/skill.yaml index fdf80179f7..02514e8fd4 100644 --- a/packages/fetchai/skills/erc1155_deploy/skill.yaml +++ b/packages/fetchai/skills/erc1155_deploy/skill.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmaTpFZmGT85V55mHJy6KECxEpCvXPz3jmf8LXQee5dhFT behaviours.py: QmdTzUWTqMNViB3Bz7FUpA5c8fohViUR95nWtRqcET4L6h dialogues.py: QmcCbdxFM4SX3MgXDxxbsC66gp8QK3C4W2czniQ5oDNc7G - handlers.py: QmUpgPoVkzPzo1A1Atrkgd79FzE72cyYg9EvuYRSctFPNJ + handlers.py: QmYYHhXs2Gv5bXWSsf2sW8fQp2JcexcLmtemzQiZuwX5dg strategy.py: QmTqQAAMUUBmXUY5YWvgLrDLFBFQ781vbxVi9WXsPo9Vr2 fingerprint_ignore_patterns: [] contracts: diff --git a/packages/fetchai/skills/generic_buyer/handlers.py b/packages/fetchai/skills/generic_buyer/handlers.py index 8648a163cf..1d2b80d0e4 100644 --- a/packages/fetchai/skills/generic_buyer/handlers.py +++ b/packages/fetchai/skills/generic_buyer/handlers.py @@ -22,7 +22,7 @@ import pprint from typing import Optional, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage from aea.protocols.signing.message import SigningMessage @@ -51,7 +51,7 @@ class GenericFipaHandler(Handler): """This class implements a FIPA handler.""" - SUPPORTED_PROTOCOL = FipaMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = FipaMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """ @@ -277,7 +277,7 @@ def _handle_invalid( class GenericOefSearchHandler(Handler): """This class implements an OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" @@ -404,7 +404,7 @@ def _handle_invalid( class GenericSigningHandler(Handler): """Implement the signing handler.""" - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -516,7 +516,7 @@ def _handle_invalid( class GenericLedgerApiHandler(Handler): """Implement the ledger handler.""" - SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" diff --git a/packages/fetchai/skills/generic_buyer/skill.yaml b/packages/fetchai/skills/generic_buyer/skill.yaml index 5f27e247d5..cab84ed3c9 100644 --- a/packages/fetchai/skills/generic_buyer/skill.yaml +++ b/packages/fetchai/skills/generic_buyer/skill.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: Qmb8QqKHNLY3G3jMk8FMcobatKCyJVEQXeLs32H4vaRRX8 behaviours.py: QmejRk9gBDRqrbnTirmqmsR8mH6KXxPMk6Ex6KsjYHB2aL dialogues.py: QmY3uJpB2UpWsa9SipZQzMjYr7WtSycuF5YS3SLyCuh78N - handlers.py: QmZaDk7TrKXUeUvT7zEgYiNn4fiUZxGuFYw6TVfReCSDDG + handlers.py: Qmdv9TWrYYzfYQH5vEjHvHA3PG1SydF3V4QqnV25uLRMtf strategy.py: Qmd8ojtvdQ1W62PpY7KM3epFzhYVzQBEhc3kPLuXjps5eN fingerprint_ignore_patterns: [] contracts: [] diff --git a/packages/fetchai/skills/generic_seller/handlers.py b/packages/fetchai/skills/generic_seller/handlers.py index 50ee01ad76..088cca65ba 100644 --- a/packages/fetchai/skills/generic_seller/handlers.py +++ b/packages/fetchai/skills/generic_seller/handlers.py @@ -21,7 +21,7 @@ from typing import Optional, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.crypto.ledger_apis import LedgerApis from aea.helpers.transaction.base import TransactionDigest from aea.protocols.base import Message @@ -49,7 +49,7 @@ class GenericFipaHandler(Handler): """This class implements a FIPA handler.""" - SUPPORTED_PROTOCOL = FipaMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = FipaMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -286,7 +286,7 @@ def _handle_invalid( class GenericLedgerApiHandler(Handler): """Implement the ledger handler.""" - SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -440,7 +440,7 @@ def _handle_invalid( class GenericOefSearchHandler(Handler): """This class implements an OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" diff --git a/packages/fetchai/skills/generic_seller/skill.yaml b/packages/fetchai/skills/generic_seller/skill.yaml index b30c4f5172..babdc61fc9 100644 --- a/packages/fetchai/skills/generic_seller/skill.yaml +++ b/packages/fetchai/skills/generic_seller/skill.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmQ3EL7VJ7GqFyz2vdfiB44tJBsjZgYqA6gDdojEPdXBut behaviours.py: QmbZuzaKRw6rx5jthJV5cd4uwapNDEH6544TeLphZxPoqY dialogues.py: QmfBWHVuKTzXu8vV5AkgWF6ZqMTZ3bs7SHEykoKXdmqvnH - handlers.py: QmQNoMFPtkqN4hzsxGXSifkK41BqrM6QRpHcQhmyduXbsM + handlers.py: QmQWzf53BxrqrXr7U9DzibA2Jj1sbEpKybF4RZNsXuFWj3 strategy.py: QmYvr6ph4ZVSXAv837kPF4Pi3u9ExXtHnaUaiZFMtji2cr fingerprint_ignore_patterns: [] contracts: [] diff --git a/packages/fetchai/skills/ml_data_provider/handlers.py b/packages/fetchai/skills/ml_data_provider/handlers.py index 0c06eeaa7e..41c7e8d24b 100644 --- a/packages/fetchai/skills/ml_data_provider/handlers.py +++ b/packages/fetchai/skills/ml_data_provider/handlers.py @@ -22,7 +22,7 @@ import pickle # nosec from typing import Optional, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage from aea.skills.base import Handler @@ -190,7 +190,7 @@ def _handle_invalid( class LedgerApiHandler(Handler): """Implement the ledger handler.""" - SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -290,7 +290,7 @@ def _handle_invalid( class OefSearchHandler(Handler): """This class implements an OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" diff --git a/packages/fetchai/skills/ml_data_provider/skill.yaml b/packages/fetchai/skills/ml_data_provider/skill.yaml index 4cbe69003b..26bf33f51f 100644 --- a/packages/fetchai/skills/ml_data_provider/skill.yaml +++ b/packages/fetchai/skills/ml_data_provider/skill.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmUVi3aegUdVK1KVkRSWN7ncAxv5CnzeD5m8C9rBoN6YZD behaviours.py: QmWgXU9qgahXwMKNqLLfDiGNYJozSXv2SVMkoPDQncC7ok dialogues.py: QmUExSjdSxrtTDzMB8tZ5J9tFrgd78LhdMuvptpViSPfAW - handlers.py: QmbmS4C1GdumnVkA5dc7czWRkjb9HGzY7YeATrnuMVU2X9 + handlers.py: QmNVuckYA3Nxm1ANkq9DrRABHu1pKfnmPswL4E4haKZZcj strategy.py: QmZd2L6byxxh6HNpRNk4qaCiUhxmodid757JYXnb8NWLDq fingerprint_ignore_patterns: [] contracts: [] diff --git a/packages/fetchai/skills/ml_train/handlers.py b/packages/fetchai/skills/ml_train/handlers.py index fa51737ced..d03c7340f5 100644 --- a/packages/fetchai/skills/ml_train/handlers.py +++ b/packages/fetchai/skills/ml_train/handlers.py @@ -23,7 +23,7 @@ import uuid from typing import Optional, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.helpers.transaction.base import Terms from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage @@ -230,7 +230,7 @@ def _handle_invalid( class OEFSearchHandler(Handler): """The OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" @@ -359,7 +359,7 @@ def _handle_invalid( class LedgerApiHandler(Handler): """Implement the ledger handler.""" - SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -538,7 +538,7 @@ def _handle_invalid( class SigningHandler(Handler): """Implement the transaction handler.""" - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" diff --git a/packages/fetchai/skills/ml_train/skill.yaml b/packages/fetchai/skills/ml_train/skill.yaml index 406aaf0d49..492830dc2b 100644 --- a/packages/fetchai/skills/ml_train/skill.yaml +++ b/packages/fetchai/skills/ml_train/skill.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmZj3RwyqJH2cTYMFQQkvqW5TnbHbn4Zr8fhGbnTREqs2w behaviours.py: QmQiBzKV5rEFpMQbSjfjzAJ7SqwwGmso6TozWkjdytucLR dialogues.py: QmPVJzrAKhfhG8n2JLhvycFYRReBFBj362LxH6s885rSQM - handlers.py: QmNpytwjcyJSFiJjETKu14MbVVNsthFpYpi1CpGfqsurzQ + handlers.py: QmW73W3kcqHjL1h6D96YwWDHhpBVTsVWfw4VHhpxRvKVXE ml_model.py: QmTfshn6dFnz9gKXZt7aJJczRH14bN7nk6TybwFpzkEPnk model.json: QmdV2tGrRY6VQ5VLgUa4yqAhPDG6X8tYsWecypq8nox9Td strategy.py: QmNnxTUoGY1VGFkJreafPcPiRJh2Cqn6tkStDKAGkAHrL8 diff --git a/packages/fetchai/skills/simple_service_registration/handlers.py b/packages/fetchai/skills/simple_service_registration/handlers.py index 5d06cc83ad..4da3f32ca0 100644 --- a/packages/fetchai/skills/simple_service_registration/handlers.py +++ b/packages/fetchai/skills/simple_service_registration/handlers.py @@ -21,7 +21,7 @@ from typing import Optional, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.protocols.base import Message from aea.skills.base import Handler @@ -38,7 +38,7 @@ class OefSearchHandler(Handler): """This class implements an OEF search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Call to setup the handler.""" diff --git a/packages/fetchai/skills/simple_service_registration/skill.yaml b/packages/fetchai/skills/simple_service_registration/skill.yaml index 7dd7c770cd..70af656487 100644 --- a/packages/fetchai/skills/simple_service_registration/skill.yaml +++ b/packages/fetchai/skills/simple_service_registration/skill.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: QmdHBxAVEUjLeBVxPiWdZw6SZaZiPrBVVbBXub9y8kUC6g behaviours.py: QmbAQq8xchbxFu7QT3RofR1VX1ExQGUBemCQuNjc5bUnVA dialogues.py: QmX8L6qMd4X6LHLyPmiXaQL2LA5Ca9Q6B77qYdfvfJ3aen - handlers.py: QmYNHtjuLNqNxuuMZmdGHCNAyJKvwaw3a2DPo8n4jPrZKD + handlers.py: QmTAC9BQGnaYKKL9D8AXKJi1Dy7bMPHfNpjBGM1SvjfHNJ strategy.py: QmdiJNDkTvhEC2yxEt4P8WYniLbjPGSSQFWjmjvhgxMtx5 fingerprint_ignore_patterns: [] contracts: [] diff --git a/packages/fetchai/skills/tac_control_contract/handlers.py b/packages/fetchai/skills/tac_control_contract/handlers.py index 2cfc3503ea..dc455ee0b3 100644 --- a/packages/fetchai/skills/tac_control_contract/handlers.py +++ b/packages/fetchai/skills/tac_control_contract/handlers.py @@ -21,7 +21,7 @@ from typing import Optional, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.crypto.ledger_apis import LedgerApis from aea.protocols.base import Message from aea.protocols.signing.message import SigningMessage @@ -57,7 +57,7 @@ class ContractApiHandler(Handler): """Implement the contract api handler.""" - SUPPORTED_PROTOCOL = ContractApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = ContractApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -181,7 +181,7 @@ def _handle_invalid( class SigningHandler(Handler): """Implement the transaction handler.""" - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -293,7 +293,7 @@ def _handle_invalid( class LedgerApiHandler(Handler): """Implement the ledger api handler.""" - SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" diff --git a/packages/fetchai/skills/tac_control_contract/skill.yaml b/packages/fetchai/skills/tac_control_contract/skill.yaml index 6a2a375899..34fc085f8f 100644 --- a/packages/fetchai/skills/tac_control_contract/skill.yaml +++ b/packages/fetchai/skills/tac_control_contract/skill.yaml @@ -12,7 +12,7 @@ fingerprint: behaviours.py: QmSkZLqgM52WgWnpY9AYWqdccpYFn4PoX3FjpCg5zdg2FW dialogues.py: QmWvhTeUnDimhQQTzuSfJJ6d2ViqgBNooCMfRiVzvzApw3 game.py: QmQwskD5DBVNv1ouRpqGNLb3zQ5krLUcR6XXHUcJ5EVc8L - handlers.py: QmYeA8eruEeVmhRpE6T7tjWreW9KWtVdtRS9FSTbKk9hq9 + handlers.py: QmTVFMBC6pUrbHNc39HLsbxUBYntE2xry4kA6qRzrpLDVU helpers.py: QmX3iv37Z5CmGupCtikc4muTpJyQ9zvjeLbNKDLF7iPhSZ parameters.py: QmVMNP52fPxkzEbXPhXtQXspnaj2f4ErZNcNdPAqv4cvwq fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/skills/tac_negotiation/handlers.py b/packages/fetchai/skills/tac_negotiation/handlers.py index 96bd3fdb8f..0ddd8b40c1 100644 --- a/packages/fetchai/skills/tac_negotiation/handlers.py +++ b/packages/fetchai/skills/tac_negotiation/handlers.py @@ -21,7 +21,7 @@ from typing import Optional, Tuple, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.crypto.ledger_apis import LedgerApis from aea.exceptions import enforce from aea.helpers.transaction.base import RawMessage @@ -57,7 +57,7 @@ class FipaNegotiationHandler(Handler): """This class implements the fipa negotiation handler.""" - SUPPORTED_PROTOCOL = FipaMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = FipaMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """ @@ -408,7 +408,7 @@ def _on_match_accept( class SigningHandler(Handler): """This class implements the transaction handler.""" - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """ @@ -614,7 +614,7 @@ def _handle_invalid( class LedgerApiHandler(Handler): """Implement the ledger api handler.""" - SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = LedgerApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" @@ -769,7 +769,7 @@ def _handle_invalid( class OefSearchHandler(Handler): """This class implements the oef search handler.""" - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """ @@ -923,7 +923,7 @@ def _handle_invalid( class ContractApiHandler(Handler): """Implement the contract api handler.""" - SUPPORTED_PROTOCOL = ContractApiMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = ContractApiMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" diff --git a/packages/fetchai/skills/tac_negotiation/skill.yaml b/packages/fetchai/skills/tac_negotiation/skill.yaml index a32e3d5e25..559efd1d76 100644 --- a/packages/fetchai/skills/tac_negotiation/skill.yaml +++ b/packages/fetchai/skills/tac_negotiation/skill.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmeFiTH6vHBd754rep2LrK96NMhZqKA4A9Qwfv9eZv6GzW behaviours.py: QmcBCRFpM6ZtcuNZ12HUuwKgQKVdiAqQ6jDNMvzTGMpDdx dialogues.py: QmXnRTML2HBWTX3CQ1xJ41tpq2VsgkQY4BoboE3AoMpb99 - handlers.py: QmNcNs6sxdu4r97uGkGi8v5D82PgFzLwKHpMKhYZTd6pnu + handlers.py: QmRw88tEdnnyrBBcehufuh6YFmjoQwsNjTaBbMWarXnYJx helpers.py: QmTJbGL8V6CLhbVhLekqKkHbu7cJMfBcv8DtWLSpkKP5tk strategy.py: QmUANbcuvYMiyrpdPbMS8xyAUb4h4LujyFtCzimSheVRJu transactions.py: QmXdxq36sFqKUAiLri9QUPNhSa1ELN1EbAJKPWzHQVWtTW diff --git a/packages/hashes.csv b/packages/hashes.csv index 45a8134191..c5423b7da0 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -35,39 +35,39 @@ fetchai/connections/tcp,QmdiYVdNCHFvYWhNMGLhAnXweoB6DsiqdzG7i37FQApPew fetchai/connections/webhook,QmRXxSvtwzvSdEXjY5UeUuoJBD4qzofMkQCzRxeoQUBmJH fetchai/contracts/erc1155,QmV7NKfpXVxeVB4JamCUKypJA7YcJseKrgfYrUuKW7egkU fetchai/contracts/scaffold,QmWDtgrzdwC7jSpMNu6MLy3U1fM7wVwgpC3JbbaueKj81q -fetchai/protocols/contract_api,QmfHLj6VAmqCXzxZ11Vz7FLE3obni2UCLMnKxyqFA1iJCF -fetchai/protocols/default,QmWYLfSXcMkvwdAzKmdD3rweSRNVwX5UTgQaH8tECGBxv4 -fetchai/protocols/fipa,QmdiRToU57bqkzD23fiz7LmtkyCDaeunzGFRdoSV9ZFZLw -fetchai/protocols/gym,QmfDY4gVBraTejz9EXYQ2H4RN6aKkgFpQD1BVCpRMAs55S -fetchai/protocols/http,QmcjgaDxKk2tXijwdzfgokHVydF8htSmJQ8C7JTYoNfQiN -fetchai/protocols/ledger_api,QmTrEGA1sDotji4GBoW2e4foFXwpFQrFX5g9bC82VSnHBn -fetchai/protocols/ml_trade,QmeCUoGByR2C57mfCNQ9N3HaXZv1NvLxUSQ4osoZmqLHLx -fetchai/protocols/oef_search,QmeU9uYHmv7MEefVsNj2kbyYxhyGphTmPpgBZ2tAydpCmt -fetchai/protocols/scaffold,QmaQJxMae5XaHKDc838pcGEKhhYSUyKHGWiMfU6zEcVHsy -fetchai/protocols/signing,QmVCe2ZsT3U9stz23uAFFjctTJjy5XRAVnngJYeNANF9Ww -fetchai/protocols/state_update,Qmdo6GidjoBnZgwYtH9QjdDJeAsjGzxSxxxWtbpHJyx9XG -fetchai/protocols/t_protocol,Qmb7pLnen3VmikYN12Fq6mWgRLanSTnxLtYpcP1g2NYz74 -fetchai/protocols/t_protocol_no_ct,QmY5WNHZTDsQWqdRcW5TCBtvPd8j6pX7PgCBwEqfMMYufb -fetchai/protocols/tac,QmfAvonoD7oM7LBejz9QPbbhF9CbQXbQVkbaDhDwK5HUSS -fetchai/skills/aries_alice,QmXep2mZJZah7PwnP8u766y6wijXB6ikNpDuij4xzGMQiE -fetchai/skills/aries_faber,QmX3j9MwMbvhBn5utr4Fi6pwRmaShibkAgmXn7C4oBgypU +fetchai/protocols/contract_api,QmQW6QhvhH8Ry3fCum5ZAXfMB2A8SA7MeiBqGG3DycwmmQ +fetchai/protocols/default,QmVrKpATAMAzpWenk6U57XJDVJ54ZoZEuJ2uhTfnSh1oEu +fetchai/protocols/fipa,QmWskHHC6UxhxciWBXp6KUkmxiEDDcCpdH5i1cZcshKGyD +fetchai/protocols/gym,QmX2QG4dmdzcRs8Fcs4ya2EmcSKGRbFqtdATb4mSy5nMn5 +fetchai/protocols/http,QmUPNqNCxbmt1YhTuAYEigCPoDc5cBAkEtoNpcx7uAXizg +fetchai/protocols/ledger_api,QmPrpgpqBR7nUtbJG9WTihDGLKa8bSbJ81BEQwFnu9r7AJ +fetchai/protocols/ml_trade,QmRwxHG1rd638ftBz548HuTeFYwaU4tY1GoEadtbGRcneo +fetchai/protocols/oef_search,QmTxwcnWzgLraCGAJnHJhnRDeNZunAteFWdhHXFSWP8HD8 +fetchai/protocols/scaffold,QmbQtyY6PgQJaioYfGhW8jKLXng4F2XLEJX2QE8oA6K6T8 +fetchai/protocols/signing,Qmeh6sLpTzn6dF65jcZ1KqM2tbZQBegi3J4q6de3WSXWwB +fetchai/protocols/state_update,Qmd3Sn76JzZ5sKHyrHsRDLQx8R9jryqHSsvtxHRXsMBuyW +fetchai/protocols/t_protocol,QmeiPgqNgpTRAteeJBiETjnjeE4BuyW2xN8bmqR7ZNgpPE +fetchai/protocols/t_protocol_no_ct,QmNqfWY9WhP98SEZMFFRgisZdEw9LQLpEzfhFDovyT9JMP +fetchai/protocols/tac,Qmf8199eHUVVURRRzXpX96LrLSiof3zQBhFKv2zgacRDAY +fetchai/skills/aries_alice,QmPGp1EEUMimpwQQmwheLNbN22DazmczUDnvcoi4uD148o +fetchai/skills/aries_faber,QmWtA7tazbgF5LY2vpCynVAssMrL9BrgD9z2dKyBnX4mvG fetchai/skills/carpark_client,QmVCL6hPWHU3pZhWPmJm3wadSZ1ksLM31pzWTWyiEEYmQJ fetchai/skills/carpark_detection,QmVdJhKfpPYkM1vDbzVbHTymhrh6TCMgYhpz4CDtJw156H fetchai/skills/echo,QmbZcW8TwMyFknmA3JN9EsrJU5nWwzveXCH3WDxBkH2Xto -fetchai/skills/erc1155_client,QmbtirnrV3KsFTvh9v6crPxf1sMyPNpqyKxMFkn92Hd4VL -fetchai/skills/erc1155_deploy,QmRJeYfmZutbdkX74ChUz8Pwn3M1it9pSBvKsqr6u82R5k -fetchai/skills/error,QmcxKbE763fRPNjoiXjGDNaza88h4aNMThcYoRgYDiPL2u -fetchai/skills/generic_buyer,QmZBLhQvmx2WqXy7AK2tzjATEbdALZAqAtKvXg83YkMzDY -fetchai/skills/generic_seller,QmQLTM4apR4WE7NYxysaW15iwJ8kiY2c28abHp7ccLbfyd +fetchai/skills/erc1155_client,QmXuBon6S7JELKtPDtAzSacvANx3hdaozBUqXNC1ZpsxtE +fetchai/skills/erc1155_deploy,QmSx8aTjv6HHnNkUoNfwHMkZ4yKNDKQTXGZVnZDQ5iTyRE +fetchai/skills/error,QmcxzV5KjsDbjRCVhPrkidZre3kN24gTU5E8jk6E2jBqVe +fetchai/skills/generic_buyer,QmQHRLo6vp68LFnBzYF3Cr5wodVQC3BYrDDmaHL5HTK1ZH +fetchai/skills/generic_seller,QmVdBmX2C5y7eJ7JmrxP56nBkfVwJMNFYhtjgwA24wA6mA fetchai/skills/gym,QmXuzQRc8MV7K73mMen5qscL1NkstKcNtQtpcFa5pyiTs3 fetchai/skills/http_echo,QmfBSgkXqSRWkAeXBfqUVJaS6LFadZoJNrXkFgQK3TiRzm -fetchai/skills/ml_data_provider,Qmb5w3ZroV5axM13QuAvwyWd23PCyAqZ7m9D3oQpNL8wSE -fetchai/skills/ml_train,QmcEPUc8hTT57tWBAiBZTZMwKHYwh2hJpjArnYG2w7n4aW -fetchai/skills/scaffold,QmaZaa8avpHmERmBup47hCup42YbvP9CYo5ogDfmLK16cP -fetchai/skills/simple_service_registration,QmcGP9pSw1zZ7CBfq3obFWSUAzkbRVqz4hsnXqhFgLiQ1a +fetchai/skills/ml_data_provider,QmbtnEDT5gCjLqnKxRkkTNJjS5WjtfyWkgeLNYgPe6UV6k +fetchai/skills/ml_train,Qma27t1Z7cjtYN7WSikRgm7RaKNXZPYvaCVmKcodaJyWoi +fetchai/skills/scaffold,QmZkE5vT1nq74whj4ApXyWP6Kqac7ZyuJiWz3Sz5PXP2JN +fetchai/skills/simple_service_registration,QmapVyCerrJChbo9j9wvrHjAp6dLvtWjFnBgzuHqxvSENw fetchai/skills/tac_control,QmNriQvKvhMsxCZSnFxsYbcYGhVpnqCb9fmcmGax6ocxcR -fetchai/skills/tac_control_contract,QmQGLkwNsU9wT8xsBhfjYuht2bwm7VN1XBfRqnDzP8UDYt -fetchai/skills/tac_negotiation,QmTkdVwN4vT8p9E1AtszbQgrizxEL5JdKZjwcFdy5Bgrfq +fetchai/skills/tac_control_contract,QmQ6cKnhN7bhhEEVQ4nLyzPiYd3wBFhzMRfW1bJSrG3QdY +fetchai/skills/tac_negotiation,Qma1gM7rmwbwAwgFXh3vVSTq4q9fDLxJUUcoAqzMFGJq1a fetchai/skills/tac_participation,QmWnL3VVMwfoJDL3rmEcoiXxandy8ZgGgaXBhGoWnzF6xs fetchai/skills/thermometer,QmTKEhqRWAHhoom1ApipHnZ7VCVHGnjjCLPwHMjNALaR9Q fetchai/skills/thermometer_client,QmPcC3KzkoZihZxxCqkYwddzs9uwoFVk2Q7GTtShtJjZw1 diff --git a/tests/common/utils.py b/tests/common/utils.py index 0162a4768f..3da05c8cd7 100644 --- a/tests/common/utils.py +++ b/tests/common/utils.py @@ -25,7 +25,7 @@ from typing import Any, Callable, Tuple, Type, Union from aea.aea import AEA -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.mail.base import Envelope from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage @@ -169,7 +169,7 @@ def dummy_envelope( cls, to: str = "test", sender: str = "test", - protocol_id: ProtocolId = DefaultMessage.protocol_id, + protocol_id: PublicId = DefaultMessage.protocol_id, message: Message = None, ) -> Envelope: """ diff --git a/tests/data/generator/t_protocol/message.py b/tests/data/generator/t_protocol/message.py index b6c80b9e37..925717bbc5 100644 --- a/tests/data/generator/t_protocol/message.py +++ b/tests/data/generator/t_protocol/message.py @@ -22,7 +22,7 @@ import logging from typing import Dict, FrozenSet, Optional, Set, Tuple, Union, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -37,7 +37,7 @@ class TProtocolMessage(Message): """A protocol for testing purposes.""" - protocol_id = ProtocolId.from_str("fetchai/t_protocol:0.1.0") + protocol_id = PublicId.from_str("fetchai/t_protocol:0.1.0") DataModel = CustomDataModel diff --git a/tests/data/generator/t_protocol/protocol.yaml b/tests/data/generator/t_protocol/protocol.yaml index 5bb413c7d6..884fa5c2f6 100644 --- a/tests/data/generator/t_protocol/protocol.yaml +++ b/tests/data/generator/t_protocol/protocol.yaml @@ -9,7 +9,7 @@ fingerprint: __init__.py: QmQy21g5sVYfmy4vSYuEFyPnobM4SA1dEouz5deXNssPWx custom_types.py: QmWg8HFav8w9tfZfMrTG5Uo7QpexvYKKkhpGPD18233pLw dialogues.py: QmdpXJCUP6wV6StDxByraFGveMcTSjjFhDju74S4QVQpxf - message.py: QmaTFAmfVGAoxmQ78J3q5KhNAk7ErwKfzsaMZik4bxdjEx + message.py: QmfR8tBa6Jqee3SqKziC3PNwCrPuj7bcRu4cgpkyUoqD1N serialization.py: QmYkdw251GKKCw6ZmPp4JmE6mXQ3jUhTgcfNKqsdCJbyfU t_protocol.proto: QmRuYvnojwkyZLzeECH3snomgoMJTB3m48yJiLq8LYsVb8 t_protocol_pb2.py: QmXrSgBBJCj8hbGCynKrvdkSDohQzHLPBA2vi5hDHmaGid diff --git a/tests/data/generator/t_protocol_no_ct/message.py b/tests/data/generator/t_protocol_no_ct/message.py index 9f8b76acb7..51fb4b2488 100644 --- a/tests/data/generator/t_protocol_no_ct/message.py +++ b/tests/data/generator/t_protocol_no_ct/message.py @@ -22,7 +22,7 @@ import logging from typing import Dict, FrozenSet, Optional, Set, Tuple, Union, cast -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message @@ -37,7 +37,7 @@ class TProtocolNoCtMessage(Message): """A protocol for testing purposes.""" - protocol_id = ProtocolId.from_str("fetchai/t_protocol_no_ct:0.1.0") + protocol_id = PublicId.from_str("fetchai/t_protocol_no_ct:0.1.0") class Performative(Message.Performative): """Performatives for the t_protocol_no_ct protocol.""" diff --git a/tests/data/generator/t_protocol_no_ct/protocol.yaml b/tests/data/generator/t_protocol_no_ct/protocol.yaml index 40d7723965..8497d68efd 100644 --- a/tests/data/generator/t_protocol_no_ct/protocol.yaml +++ b/tests/data/generator/t_protocol_no_ct/protocol.yaml @@ -8,7 +8,7 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: __init__.py: QmaaZ7Je2PRTkcnqy8oLR58yBDVpcRQ4BcaRe3sd3fug3Z dialogues.py: QmPHhh9wkKDG7Fiy9E2WkkggYULFhLrySihJpoBw3mRn2o - message.py: QmT5Goi3nLkkRRgqzL7fugSQG2Tpvrmm22jXNT7fn3L7ax + message.py: QmZ5J1KME6VEKoGKtxUKnfAL7B4MjGosesAVdsZCix9hmY serialization.py: QmfMNm543uhKp7MwPcEvBMoCyi54phLZ4AHpC6S1S2y8Uv t_protocol_no_ct.proto: QmeZWVLhb6EUGr5AgVwgf2YTEZTSuCskpmxCwAE3sDU9sY t_protocol_no_ct_pb2.py: QmYtjyYTv1fQrwTS2x5ZkrNB8bpgH2vpPUJsUV29B7E4d9 diff --git a/tests/test_cli/test_get_multiaddress.py b/tests/test_cli/test_get_multiaddress.py index 832e78efec..027a37e2a5 100644 --- a/tests/test_cli/test_get_multiaddress.py +++ b/tests/test_cli/test_get_multiaddress.py @@ -61,7 +61,7 @@ def test_run(self, *mocks): base58.b58decode(result.stdout) -class TestGetMultiAddressCommandConnectionIdPositive(AEATestCaseEmpty): +class TestGetMultiAddressCommandPublicIdPositive(AEATestCaseEmpty): """Test case for CLI get-multiaddress command with --connection flag.""" def test_run(self, *mocks): @@ -95,7 +95,7 @@ def test_run(self, *mocks): base58.b58decode(base58_addr) -class TestGetMultiAddressCommandConnectionIdURIPositive(AEATestCaseEmpty): +class TestGetMultiAddressCommandPublicIdURIPositive(AEATestCaseEmpty): """Test case for CLI get-multiaddress command with --connection flag and --uri.""" def test_run(self, *mocks): @@ -235,7 +235,7 @@ def test_run(self, *mocks): ) -class TestGetMultiAddressCommandNegativeBadConnectionId(AEATestCaseEmpty): +class TestGetMultiAddressCommandNegativeBadPublicId(AEATestCaseEmpty): """Test case for CLI get-multiaddress when the connection id is missing.""" def test_run(self, *mocks): 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 d4c1d27cde..5da372238d 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 @@ -25,7 +25,7 @@ from typing import Optional, cast from aea.aea_builder import AEABuilder -from aea.configurations.base import ProtocolId, SkillConfig +from aea.configurations.base import PublicId, SkillConfig from aea.crypto.fetchai import FetchAICrypto from aea.crypto.helpers import create_private_key from aea.crypto.ledger_apis import LedgerApis @@ -178,7 +178,7 @@ def role_from_first_message( # pylint: disable=unused-argument class SigningHandler(Handler): """Implement the signing handler.""" - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] def setup(self) -> None: """Implement the setup for the handler.""" 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 6477669016..a86cc0ce03 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 @@ -36,7 +36,7 @@ from aea.configurations.base import ( ConnectionConfig, ProtocolConfig, - ProtocolId, + PublicId, SkillConfig, ) from aea.configurations.constants import DEFAULT_LEDGER, DEFAULT_PRIVATE_KEY_FILE @@ -275,7 +275,7 @@ def teardown_class(cls): class AEAHandler(Handler): """The handler for the AEA.""" - SUPPORTED_PROTOCOL = HttpMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = HttpMessage.protocol_id # type: Optional[PublicId] def __init__(self, **kwargs): """Initialize the handler.""" diff --git a/tests/test_packages/test_connections/test_ledger/test_ledger_api.py b/tests/test_packages/test_connections/test_ledger/test_ledger_api.py index 0f9703b6d7..662ef3845b 100644 --- a/tests/test_packages/test_connections/test_ledger/test_ledger_api.py +++ b/tests/test_packages/test_connections/test_ledger/test_ledger_api.py @@ -27,7 +27,7 @@ import pytest from aea.common import Address -from aea.configurations.base import ProtocolId +from aea.configurations.base import PublicId from aea.connections.base import Connection, ConnectionStates from aea.crypto.ledger_apis import LedgerApis from aea.crypto.registries import make_crypto, make_ledger_api @@ -278,7 +278,7 @@ async def test_unsupported_protocol(ledger_apis_connection: LedgerConnection): envelope = Envelope( to=str(ledger_apis_connection.connection_id), sender="test", - protocol_id=ProtocolId.from_str("author/package_name:0.1.0"), + protocol_id=PublicId.from_str("author/package_name:0.1.0"), message=b"message", ) with pytest.raises(ValueError): diff --git a/tests/test_protocols/test_generator/test_end_to_end.py b/tests/test_protocols/test_generator/test_end_to_end.py index 6559f3e419..826c9593aa 100644 --- a/tests/test_protocols/test_generator/test_end_to_end.py +++ b/tests/test_protocols/test_generator/test_end_to_end.py @@ -27,7 +27,7 @@ from typing import Optional, cast from aea.aea_builder import AEABuilder -from aea.configurations.base import ComponentType, ProtocolId, PublicId, SkillConfig +from aea.configurations.base import ComponentType, PublicId, SkillConfig from aea.configurations.constants import DEFAULT_LEDGER, DEFAULT_PRIVATE_KEY_FILE from aea.crypto.helpers import create_private_key from aea.protocols.base import Address, Message @@ -312,7 +312,7 @@ def teardown_class(cls): class Agent1Handler(Handler): """The handler for agent 1.""" - SUPPORTED_PROTOCOL = TProtocolMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = TProtocolMessage.protocol_id # type: Optional[PublicId] def __init__(self, dialogues: TProtocolDialogues, **kwargs): """Initialize the handler.""" @@ -347,7 +347,7 @@ def teardown(self) -> None: class Agent2Handler(Handler): """The handler for agent 2.""" - SUPPORTED_PROTOCOL = TProtocolMessage.protocol_id # type: Optional[ProtocolId] + SUPPORTED_PROTOCOL = TProtocolMessage.protocol_id # type: Optional[PublicId] def __init__( self, message: TProtocolMessage, dialogues: TProtocolDialogues, **kwargs From bffaef15eaad29e1828d09ed8722872e7a961b01 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 12:50:36 +0100 Subject: [PATCH 039/155] add support for abstract connections --- aea/configurations/base.py | 12 +++++++- .../schemas/connection-config_schema.json | 3 ++ aea/connections/scaffold/connection.yaml | 1 + aea/connections/stub/connection.yaml | 1 + .../fetchai/connections/gym/connection.yaml | 1 + .../connections/http_client/connection.yaml | 1 + .../connections/http_server/connection.yaml | 1 + .../connections/ledger/connection.yaml | 1 + .../fetchai/connections/local/connection.yaml | 1 + .../fetchai/connections/oef/connection.yaml | 1 + .../connections/p2p_libp2p/connection.yaml | 1 + .../p2p_libp2p_client/connection.yaml | 1 + .../connections/p2p_stub/connection.yaml | 1 + .../fetchai/connections/soef/connection.yaml | 1 + .../fetchai/connections/tcp/connection.yaml | 1 + .../connections/webhook/connection.yaml | 1 + packages/hashes.csv | 28 +++++++++---------- tests/data/dummy_connection/connection.yaml | 1 + tests/data/hashes.csv | 2 +- 19 files changed, 44 insertions(+), 16 deletions(-) diff --git a/aea/configurations/base.py b/aea/configurations/base.py index 0692d55eb6..5405cec0d4 100644 --- a/aea/configurations/base.py +++ b/aea/configurations/base.py @@ -1145,7 +1145,7 @@ class ConnectionConfig(ComponentConfiguration): default_configuration_filename = DEFAULT_CONNECTION_CONFIG_FILE package_type = PackageType.CONNECTION - FIELDS_ALLOWED_TO_UPDATE: FrozenSet[str] = frozenset(["config"]) + FIELDS_ALLOWED_TO_UPDATE: FrozenSet[str] = frozenset(["config", "is_abstract"]) def __init__( self, @@ -1163,6 +1163,7 @@ def __init__( dependencies: Optional[Dependencies] = None, description: str = "", connection_id: Optional[PublicId] = None, + is_abstract: bool = False, **config, ): """Initialize a connection configuration object.""" @@ -1207,6 +1208,7 @@ def __init__( self.dependencies = dependencies if dependencies is not None else {} self.description = description self.config = config if len(config) > 0 else {} + self.is_abstract = is_abstract @property def package_dependencies(self) -> Set[ComponentId]: @@ -1216,6 +1218,11 @@ def package_dependencies(self) -> Set[ComponentId]: for protocol_id in self.protocols ) + @property + def is_abstract_component(self) -> bool: + """Check whether the component is abstract.""" + return self.is_abstract + @property def json(self) -> Dict: """Return the JSON representation.""" @@ -1238,6 +1245,7 @@ def json(self) -> Dict: map(str, self.restricted_to_protocols) ), "dependencies": dependencies_to_json(self.dependencies), + "is_abstract": self.is_abstract, } ) @@ -1268,6 +1276,7 @@ def from_json(cls, obj: Dict): excluded_protocols=cast(Set[PublicId], excluded_protocols), dependencies=cast(Dependencies, dependencies), description=cast(str, obj.get("description", "")), + is_abstract=obj.get("is_abstract", False), **cast(dict, obj.get("config", {})), ) @@ -1282,6 +1291,7 @@ def update(self, data: Dict) -> None: """ new_config = data.get("config", {}) recursive_update(self.config, new_config) + self.is_abstract = data.get("is_abstract", self.is_abstract) class ProtocolConfig(ComponentConfiguration): diff --git a/aea/configurations/schemas/connection-config_schema.json b/aea/configurations/schemas/connection-config_schema.json index 011f96bf3b..3c00b7335d 100644 --- a/aea/configurations/schemas/connection-config_schema.json +++ b/aea/configurations/schemas/connection-config_schema.json @@ -72,6 +72,9 @@ }, "description": { "$ref": "definitions.json#/definitions/description" + }, + "is_abstract": { + "$ref": "skill-config_schema.json#/properties/is_abstract" } } } diff --git a/aea/connections/scaffold/connection.yaml b/aea/connections/scaffold/connection.yaml index fc2af889a2..44837f38d2 100644 --- a/aea/connections/scaffold/connection.yaml +++ b/aea/connections/scaffold/connection.yaml @@ -18,3 +18,4 @@ config: excluded_protocols: [] restricted_to_protocols: [] dependencies: {} +is_abstract: false diff --git a/aea/connections/stub/connection.yaml b/aea/connections/stub/connection.yaml index 015ce263bd..4a7136a01a 100644 --- a/aea/connections/stub/connection.yaml +++ b/aea/connections/stub/connection.yaml @@ -19,3 +19,4 @@ config: excluded_protocols: [] restricted_to_protocols: [] dependencies: {} +is_abstract: false diff --git a/packages/fetchai/connections/gym/connection.yaml b/packages/fetchai/connections/gym/connection.yaml index 2d715eb5e0..05548168dc 100644 --- a/packages/fetchai/connections/gym/connection.yaml +++ b/packages/fetchai/connections/gym/connection.yaml @@ -20,3 +20,4 @@ restricted_to_protocols: - fetchai/gym:0.7.0 dependencies: gym: {} +is_abstract: false diff --git a/packages/fetchai/connections/http_client/connection.yaml b/packages/fetchai/connections/http_client/connection.yaml index fd6413199d..e3f4ca69a5 100644 --- a/packages/fetchai/connections/http_client/connection.yaml +++ b/packages/fetchai/connections/http_client/connection.yaml @@ -23,3 +23,4 @@ restricted_to_protocols: dependencies: aiohttp: version: <3.7,>=3.6.2 +is_abstract: false diff --git a/packages/fetchai/connections/http_server/connection.yaml b/packages/fetchai/connections/http_server/connection.yaml index 7aa3f5451f..261413dac4 100644 --- a/packages/fetchai/connections/http_server/connection.yaml +++ b/packages/fetchai/connections/http_server/connection.yaml @@ -28,3 +28,4 @@ dependencies: version: ==0.13.2 openapi-spec-validator: version: ==0.2.8 +is_abstract: false diff --git a/packages/fetchai/connections/ledger/connection.yaml b/packages/fetchai/connections/ledger/connection.yaml index a3e13400a0..f34f3c537b 100644 --- a/packages/fetchai/connections/ledger/connection.yaml +++ b/packages/fetchai/connections/ledger/connection.yaml @@ -29,3 +29,4 @@ restricted_to_protocols: - fetchai/contract_api:0.6.0 - fetchai/ledger_api:0.5.0 dependencies: {} +is_abstract: false diff --git a/packages/fetchai/connections/local/connection.yaml b/packages/fetchai/connections/local/connection.yaml index bff14c1dbe..6eecf5fe3b 100644 --- a/packages/fetchai/connections/local/connection.yaml +++ b/packages/fetchai/connections/local/connection.yaml @@ -17,3 +17,4 @@ config: {} excluded_protocols: [] restricted_to_protocols: [] dependencies: {} +is_abstract: false diff --git a/packages/fetchai/connections/oef/connection.yaml b/packages/fetchai/connections/oef/connection.yaml index 022e06b0f3..14c4347016 100644 --- a/packages/fetchai/connections/oef/connection.yaml +++ b/packages/fetchai/connections/oef/connection.yaml @@ -25,3 +25,4 @@ dependencies: colorlog: {} oef: version: ==0.8.1 +is_abstract: false diff --git a/packages/fetchai/connections/p2p_libp2p/connection.yaml b/packages/fetchai/connections/p2p_libp2p/connection.yaml index f53f6617b2..c9fd19f695 100644 --- a/packages/fetchai/connections/p2p_libp2p/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p/connection.yaml @@ -42,3 +42,4 @@ config: excluded_protocols: [] restricted_to_protocols: [] dependencies: {} +is_abstract: false diff --git a/packages/fetchai/connections/p2p_libp2p_client/connection.yaml b/packages/fetchai/connections/p2p_libp2p_client/connection.yaml index b3650682ab..f8eaf413f5 100644 --- a/packages/fetchai/connections/p2p_libp2p_client/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p_client/connection.yaml @@ -23,3 +23,4 @@ config: excluded_protocols: [] restricted_to_protocols: [] dependencies: {} +is_abstract: false diff --git a/packages/fetchai/connections/p2p_stub/connection.yaml b/packages/fetchai/connections/p2p_stub/connection.yaml index 7bdab3f2b8..db3036d030 100644 --- a/packages/fetchai/connections/p2p_stub/connection.yaml +++ b/packages/fetchai/connections/p2p_stub/connection.yaml @@ -19,3 +19,4 @@ excluded_protocols: [] restricted_to_protocols: [] dependencies: watchdog: {} +is_abstract: false diff --git a/packages/fetchai/connections/soef/connection.yaml b/packages/fetchai/connections/soef/connection.yaml index 26db2bca90..bf5a577649 100644 --- a/packages/fetchai/connections/soef/connection.yaml +++ b/packages/fetchai/connections/soef/connection.yaml @@ -23,3 +23,4 @@ restricted_to_protocols: - fetchai/oef_search:0.8.0 dependencies: defusedxml: {} +is_abstract: false diff --git a/packages/fetchai/connections/tcp/connection.yaml b/packages/fetchai/connections/tcp/connection.yaml index efe9411835..844700b547 100644 --- a/packages/fetchai/connections/tcp/connection.yaml +++ b/packages/fetchai/connections/tcp/connection.yaml @@ -21,3 +21,4 @@ config: excluded_protocols: [] restricted_to_protocols: [] dependencies: {} +is_abstract: false diff --git a/packages/fetchai/connections/webhook/connection.yaml b/packages/fetchai/connections/webhook/connection.yaml index ec7cecc9bf..dc3122249c 100644 --- a/packages/fetchai/connections/webhook/connection.yaml +++ b/packages/fetchai/connections/webhook/connection.yaml @@ -23,3 +23,4 @@ restricted_to_protocols: dependencies: aiohttp: version: ==3.6.2 +is_abstract: false diff --git a/packages/hashes.csv b/packages/hashes.csv index 1c9c2a4ca4..a7d7a16da5 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -19,20 +19,20 @@ fetchai/agents/thermometer_aea,QmNN7XcjNp67QUEfaSypZsbainmBshAZSqD7itx28ef8g3 fetchai/agents/thermometer_client,Qmdvvk9HreF5V4zoWLoM64A5n5HjzdxwKVLgTVcyxJHdda fetchai/agents/weather_client,QmbF8UfJKiJh8hLXuTPoMfK4bgUe1AquMq7nGcgQAZqYn6 fetchai/agents/weather_station,QmcgbSf97vYTvcV3SrMUf9pt1EnNTNS6EUYbBVnkbVNVKZ -fetchai/connections/gym,QmaVjWPpipys1swkQy64GitynFjyTNZMaVRex4k2RiLnyy -fetchai/connections/http_client,QmPL4gBPPkJgX2s3ZpwgvA4LU7zad159nzS3MTTREPLWC3 -fetchai/connections/http_server,Qmdc7MCZVmWk76k2pHB2zBwTJ9iokWpuZ8iqzzreBpVEgn -fetchai/connections/ledger,QmQz561g9MqeTviwbVRUKSY4m1rP5htevi23GKcMYfVwFb -fetchai/connections/local,QmVw7RDiP5uBtUKodcvvS3uvojPYQGHKMjavUJ2iE7aNB4 -fetchai/connections/oef,QmUnHLMteyQvJKLg1EA5FgwugHz5rjZZFboAL5KB3NgeU1 -fetchai/connections/p2p_libp2p,QmStTaRFFdh6nTm68A9C2XPh2wR1teBPM3k1y9mC9hVsiz -fetchai/connections/p2p_libp2p_client,QmV3Tp1d9sUMQpyvtYnsTQPudk1UMQrmaccWnPb5xGebss -fetchai/connections/p2p_stub,QmPstikxKerbMnnjUJrMsSHpEx2UXAhPDa6N5nzB3qeRJB -fetchai/connections/scaffold,QmNUta43nLexAHaXLgmLQYEjntLXSV6MLNvc6Q2CTx7eBS -fetchai/connections/soef,QmcRKha58cJA15nGQYCamvt5rmAQgfFwsQYdWfJF5HvUSc -fetchai/connections/stub,QmUEv1bMiFqk3wSR3EnYpNDrufwmHckFdpWKwjtcRjdzjN -fetchai/connections/tcp,QmdiYVdNCHFvYWhNMGLhAnXweoB6DsiqdzG7i37FQApPew -fetchai/connections/webhook,QmRXxSvtwzvSdEXjY5UeUuoJBD4qzofMkQCzRxeoQUBmJH +fetchai/connections/gym,QmbTsxKbWWQKLm2RyGAZVxgxXvTLrjatfahi4YWRqwwuDY +fetchai/connections/http_client,QmNomLcsHxKpDuFYXTSoitvrsryVUjRHVEXbjcg8WYf6Y6 +fetchai/connections/http_server,QmRc5V4itvLy7MhoFhNm1AoCukRHvwepGKFYkeUQhVVNaV +fetchai/connections/ledger,Qmbx8nc2nTm8ixvSTVyJH9DATuxLBy7Vr8GYRDqSUH2sEP +fetchai/connections/local,QmYV9sToTqD8cVoxbaBf2YTtYUHSBbziSGe3Q8z7ZRaACe +fetchai/connections/oef,QmdBfbCfYumf89515bPPsRVCm9q8gHwtcseWZGnFpifX9A +fetchai/connections/p2p_libp2p,QmXPoYUKkRRTppE9bRULeMwEVXXMnD5bYdeEEy6zQSzEWA +fetchai/connections/p2p_libp2p_client,QmaTYe8aLfTRA3k9SNkjjehSGoWPASspCCscGxkUnoyGmm +fetchai/connections/p2p_stub,QmR775dXUKhv7JHroVYcapifxgcMnaaJ9k6C4gEgLNp735 +fetchai/connections/scaffold,QmYipigBgyD2MiA8k3xbfXp9SJsymoFpTgj6LjS6XTKKwN +fetchai/connections/soef,QmXHbf9y4aEpLb3mJUHNM7CWRV5CQkmgbJxcjhbNWnmUqS +fetchai/connections/stub,QmSbhSPAjwhvD7mJENUne4FasDwsfrsjgjn3EJeGuW3qLi +fetchai/connections/tcp,QmSrDaj9j6J2sJmdFcnXyi3P9yQCZfHM9bpZeJ9wsLiNvK +fetchai/connections/webhook,Qmd87FcHt3DBs52cXpysQjrG2GGd73UiqBs249qhREDPyd fetchai/contracts/erc1155,QmbqeTU1TDRVHfqdX6VNf9sWdoqjRAcC1i25ZaCwZXjntY fetchai/contracts/scaffold,QmTKkXifQKq5sTVdVKeD9UGnDwdJoEAoJDjY6qUPt9Bsv2 fetchai/protocols/contract_api,QmfHLj6VAmqCXzxZ11Vz7FLE3obni2UCLMnKxyqFA1iJCF diff --git a/tests/data/dummy_connection/connection.yaml b/tests/data/dummy_connection/connection.yaml index 9af2fc2cf4..8937703fa1 100644 --- a/tests/data/dummy_connection/connection.yaml +++ b/tests/data/dummy_connection/connection.yaml @@ -24,3 +24,4 @@ dependencies: version: '>=1.10.11a1' dep4: version: <=1.11.12b2 +is_abstract: false diff --git a/tests/data/hashes.csv b/tests/data/hashes.csv index 45c2413f06..63a35999b3 100644 --- a/tests/data/hashes.csv +++ b/tests/data/hashes.csv @@ -1,6 +1,6 @@ dummy_author/agents/dummy_aea,QmdvumQvcNv2yzfZ6MagWJYtUFLoE9q9rAmQwoCGYbtH3w dummy_author/skills/dummy_skill,QmbNGnFv7RuFbZ3Gy5VyRiEiN8bKCPSkzNzRhogXQwUpFd -fetchai/connections/dummy_connection,QmV4RsMfJ3P858RNgXVp9VSQoE6QT78b5WxQ35rRjCy5jR +fetchai/connections/dummy_connection,QmeBeNTd7HezaHnAGtHPMJugJvtFtEr5Bm8sBR3EHxmY4P fetchai/contracts/dummy_contract,QmPMs9VDGZGF8xJ8XBYLVb1xK5XAgiaJr5Gwcq7Vr3TUyu fetchai/skills/dependencies_skill,QmRKwjiPFptKnSB772aD9a5xCDgd956rEJEYo48pNk8ZmZ fetchai/skills/exception_skill,QmQidMBMHE3pyTXuFpPvLBe6y3vQF3bmquGr3yymnaG3mr From 69574f3a942b698241b715ab97855a878c453fa4 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 13:59:08 +0100 Subject: [PATCH 040/155] fix multi agent manager to work with local packages too --- aea/aea_builder.py | 2 +- aea/cli/fetch.py | 10 +++++++-- aea/cli/install.py | 2 +- aea/cli/utils/context.py | 10 +++++++-- aea/cli/utils/package_utils.py | 8 ++++++-- aea/cli_gui/templates/home.html | 4 ++-- aea/configurations/project.py | 27 +++++++++++++++++++------ aea/helpers/install_dependency.py | 6 ++++-- aea/manager.py | 20 ++++++++++++++---- tests/test_cli/test_get_multiaddress.py | 6 +++--- tests/test_manager.py | 16 +++++++-------- 11 files changed, 78 insertions(+), 33 deletions(-) diff --git a/aea/aea_builder.py b/aea/aea_builder.py index 6ca48aba47..a88406f324 100644 --- a/aea/aea_builder.py +++ b/aea/aea_builder.py @@ -228,7 +228,7 @@ def pypi_dependencies(self) -> Dependencies: def install_dependencies(self) -> None: """Install extra dependencies for components.""" for name, d in self.pypi_dependencies.items(): - install_dependency(name, d) + install_dependency(name, d, _default_logger) class AEABuilder(WithLogger): # pylint: disable=too-many-public-methods diff --git a/aea/cli/fetch.py b/aea/cli/fetch.py index e10b9eae29..0a30a7a3b8 100644 --- a/aea/cli/fetch.py +++ b/aea/cli/fetch.py @@ -69,7 +69,10 @@ def _is_version_correct(ctx: Context, agent_public_id: PublicId) -> bool: @clean_after def fetch_agent_locally( - ctx: Context, public_id: PublicId, alias: Optional[str] = None + ctx: Context, + public_id: PublicId, + alias: Optional[str] = None, + target_dir: Optional[str] = None, ) -> None: """ Fetch Agent from local packages. @@ -77,6 +80,7 @@ def fetch_agent_locally( :param ctx: a Context object. :param public_id: public ID of agent to be fetched. :param alias: an optional alias. + :param target_dir: the target directory to which the agent is fetched. :return: None """ packages_path = os.path.basename(DEFAULT_REGISTRY_PATH) @@ -92,12 +96,14 @@ def fetch_agent_locally( ) ) - folder_name = public_id.name if alias is None else alias + folder_name = target_dir or (public_id.name if alias is None else alias) target_path = os.path.join(ctx.cwd, folder_name) if os.path.exists(target_path): raise click.ClickException( 'Item "{}" already exists in target folder.'.format(public_id.name) ) + else: + os.makedirs(target_path) ctx.clean_paths.append(target_path) copy_tree(source_path, target_path) diff --git a/aea/cli/install.py b/aea/cli/install.py index 82f869ebe9..f1fb531114 100644 --- a/aea/cli/install.py +++ b/aea/cli/install.py @@ -65,7 +65,7 @@ def do_install(ctx: Context, requirement: Optional[str] = None) -> None: logger.debug("Installing all the dependencies...") dependencies = ctx.get_dependencies() for name, d in dependencies.items(): - install_dependency(name, d) + install_dependency(name, d, logger) except AEAException as e: raise click.ClickException(str(e)) diff --git a/aea/cli/utils/context.py b/aea/cli/utils/context.py index 3bdb651525..3e7d05edc9 100644 --- a/aea/cli/utils/context.py +++ b/aea/cli/utils/context.py @@ -20,7 +20,7 @@ """A module with context tools of the aea cli.""" from pathlib import Path -from typing import Dict, List, cast +from typing import Dict, List, Optional, cast from aea.cli.utils.loggers import logger from aea.configurations.base import ( @@ -38,12 +38,18 @@ class Context: agent_config: AgentConfig - def __init__(self, cwd: str = ".", verbosity: str = "INFO"): + def __init__( + self, + cwd: str = ".", + verbosity: str = "INFO", + registry_path: Optional[str] = None, + ): """Init the context.""" self.config = dict() # type: Dict self.cwd = cwd self.verbosity = verbosity self.clean_paths: List = [] + self.registry_path = registry_path @property def agent_loader(self) -> ConfigLoader: diff --git a/aea/cli/utils/package_utils.py b/aea/cli/utils/package_utils.py index 050b8acb83..2dd38b23fc 100644 --- a/aea/cli/utils/package_utils.py +++ b/aea/cli/utils/package_utils.py @@ -224,7 +224,7 @@ def copy_package_directory(src: Path, dst: str) -> Path: def find_item_locally( - ctx, item_type, item_public_id + ctx: Context, item_type: str, item_public_id: PublicId ) -> Tuple[Path, ComponentConfiguration]: """ Find an item in the local registry. @@ -241,7 +241,11 @@ def find_item_locally( item_name = item_public_id.name # check in registry - registry_path = os.path.join(ctx.cwd, ctx.agent_config.registry_path) + registry_path = ( + os.path.join(ctx.cwd, ctx.agent_config.registry_path) + if ctx.registry_path is None + else ctx.registry_path + ) package_path = Path( registry_path, item_public_id.author, item_type_plural, item_name ) diff --git a/aea/cli_gui/templates/home.html b/aea/cli_gui/templates/home.html index 622c67f09f..104c61a51e 100644 --- a/aea/cli_gui/templates/home.html +++ b/aea/cli_gui/templates/home.html @@ -226,10 +226,10 @@

    Run "NONE" agent diff --git a/aea/configurations/project.py b/aea/configurations/project.py index 5fcfc53445..fdc8b9b876 100644 --- a/aea/configurations/project.py +++ b/aea/configurations/project.py @@ -23,6 +23,7 @@ from aea.aea import AEA from aea.aea_builder import AEABuilder +from aea.cli.fetch import fetch_agent_locally from aea.cli.registry.fetch import fetch_agent from aea.cli.utils.context import Context from aea.configurations.base import PublicId @@ -38,13 +39,27 @@ def __init__(self, public_id: PublicId, path: str): self.agents: Set[str] = set() @classmethod - def load(cls, working_dir: str, public_id: PublicId) -> "Project": - """Load project with given public_id to working_dir.""" - ctx = Context(cwd=working_dir) + def load( + cls, + working_dir: str, + public_id: PublicId, + is_local: bool = False, + registry_path: str = "packages", + ) -> "Project": + """ + Load project with given public_id to working_dir. + + :param working_dir: the working directory + :param public_id: the public id + :param is_local: whether to fetch from local or remote + """ + ctx = Context(cwd=working_dir, registry_path=registry_path) path = os.path.join(working_dir, public_id.author, public_id.name) - fetch_agent( - ctx, public_id, target_dir=os.path.join(public_id.author, public_id.name) - ) + target_dir = os.path.join(public_id.author, public_id.name) + if is_local: + fetch_agent_locally(ctx, public_id, target_dir=target_dir) + else: + fetch_agent(ctx, public_id, target_dir=target_dir) return cls(public_id, path) def remove(self) -> None: diff --git a/aea/helpers/install_dependency.py b/aea/helpers/install_dependency.py index c2fb2654fa..d64a46e396 100644 --- a/aea/helpers/install_dependency.py +++ b/aea/helpers/install_dependency.py @@ -20,16 +20,18 @@ import pprint import subprocess # nosec import sys +from logging import Logger from typing import List import click -from aea.cli.utils.loggers import logger from aea.configurations.base import Dependency from aea.exceptions import AEAException, enforce -def install_dependency(dependency_name: str, dependency: Dependency) -> None: +def install_dependency( + dependency_name: str, dependency: Dependency, logger: Logger +) -> None: """ Install python dependency to the current python environment. diff --git a/aea/manager.py b/aea/manager.py index 33257b4d23..97f9ea2c83 100644 --- a/aea/manager.py +++ b/aea/manager.py @@ -132,13 +132,16 @@ class MultiAgentManager: MODES = ["async", "threaded"] DEFAULT_TIMEOUT_FOR_BLOCKING_OPERATIONS = 60 - def __init__(self, working_dir: str, mode: str = "async") -> None: + def __init__( + self, working_dir: str, mode: str = "async", registry_path: str = "packages" + ) -> None: """ Initialize manager. :param working_dir: directory to store base agents. """ self.working_dir = working_dir + self.registry_path = registry_path self._was_working_dir_created = False self._is_running = False self._projects: Dict[PublicId, Project] = {} @@ -263,11 +266,20 @@ def _cleanup(self) -> None: if self._was_working_dir_created and os.path.exists(self.working_dir): rmtree(self.working_dir) - def add_project(self, public_id: PublicId) -> "MultiAgentManager": - """Fetch agent project and all dependencies to working_dir.""" + def add_project( + self, public_id: PublicId, local: bool = True + ) -> "MultiAgentManager": + """ + Fetch agent project and all dependencies to working_dir. + + :param public_id: the public if of the agent project. + :param local: whether or not to fetch from local registry. + """ if public_id in self._projects: raise ValueError(f"Project {public_id} was already added!") - self._projects[public_id] = Project.load(self.working_dir, public_id) + self._projects[public_id] = Project.load( + self.working_dir, public_id, local, registry_path=self.registry_path + ) return self def remove_project(self, public_id: PublicId) -> "MultiAgentManager": diff --git a/tests/test_cli/test_get_multiaddress.py b/tests/test_cli/test_get_multiaddress.py index 027a37e2a5..832e78efec 100644 --- a/tests/test_cli/test_get_multiaddress.py +++ b/tests/test_cli/test_get_multiaddress.py @@ -61,7 +61,7 @@ def test_run(self, *mocks): base58.b58decode(result.stdout) -class TestGetMultiAddressCommandPublicIdPositive(AEATestCaseEmpty): +class TestGetMultiAddressCommandConnectionIdPositive(AEATestCaseEmpty): """Test case for CLI get-multiaddress command with --connection flag.""" def test_run(self, *mocks): @@ -95,7 +95,7 @@ def test_run(self, *mocks): base58.b58decode(base58_addr) -class TestGetMultiAddressCommandPublicIdURIPositive(AEATestCaseEmpty): +class TestGetMultiAddressCommandConnectionIdURIPositive(AEATestCaseEmpty): """Test case for CLI get-multiaddress command with --connection flag and --uri.""" def test_run(self, *mocks): @@ -235,7 +235,7 @@ def test_run(self, *mocks): ) -class TestGetMultiAddressCommandNegativeBadPublicId(AEATestCaseEmpty): +class TestGetMultiAddressCommandNegativeBadConnectionId(AEATestCaseEmpty): """Test case for CLI get-multiaddress when the connection id is missing.""" def test_run(self, *mocks): diff --git a/tests/test_manager.py b/tests/test_manager.py index f64653ab68..bac06166d5 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -33,13 +33,13 @@ class TestMultiAgentManagerAsyncMode: # pylint: disable=unused-argument,protect MODE = "async" - echo_skill_id = PublicId("fetchai", "echo", "0.7.0") + echo_skill_id = PublicId.from_str("fetchai/echo:0.9.0") def setup(self): """Set test case.""" self.agent_name = "test_what_ever12" self.working_dir = "MultiAgentManager_dir" - self.project_public_id = PublicId("fetchai", "my_first_aea", "0.11.0") + self.project_public_id = PublicId.from_str("fetchai/my_first_aea:0.13.0") self.project_path = os.path.join( self.working_dir, self.project_public_id.author, self.project_public_id.name ) @@ -70,13 +70,13 @@ def test_add_remove_project(self): """Test add and remove project.""" self.manager.start_manager() - self.manager.add_project(self.project_public_id) + self.manager.add_project(self.project_public_id, local=True) assert self.project_public_id in self.manager.list_projects() assert os.path.exists(self.project_path) with pytest.raises(ValueError, match=r".*was already added.*"): - self.manager.add_project(self.project_public_id) + self.manager.add_project(self.project_public_id, local=True) self.manager.remove_project(self.project_public_id) assert self.project_public_id not in self.manager.list_projects() @@ -84,7 +84,7 @@ def test_add_remove_project(self): with pytest.raises(ValueError, match=r"is not present"): self.manager.remove_project(self.project_public_id) - self.manager.add_project(self.project_public_id) + self.manager.add_project(self.project_public_id, local=True) assert self.project_public_id in self.manager.list_projects() assert os.path.exists(self.project_path) @@ -92,7 +92,7 @@ def test_add_agent(self): """Test add agent alias.""" self.manager.start_manager() - self.manager.add_project(self.project_public_id) + self.manager.add_project(self.project_public_id, local=True) new_tick_interval = 0.2111 @@ -232,7 +232,7 @@ def test_do_no_allow_override_some_fields(self): """Do not allo to override some values in agent config.""" self.manager.start_manager() - self.manager.add_project(self.project_public_id) + self.manager.add_project(self.project_public_id, local=True) BAD_OVERRIDES = ["skills", "connections", "contracts", "protocols"] @@ -292,7 +292,7 @@ def test_install_pypi_dependencies(self): """Test add agent alias.""" self.manager.start_manager() - self.manager.add_project(self.project_public_id) + self.manager.add_project(self.project_public_id, local=True) # check empty project, nothing should be installed with patch( From e03cdb561d5f4274472159c270a0a1574ec7e472 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 16:15:19 +0100 Subject: [PATCH 041/155] replace hard coded public ids --- aea/cli/fetch.py | 2 +- tests/conftest.py | 10 +-------- tests/data/dummy_connection/connection.py | 2 +- tests/test_aea.py | 20 ++++++++--------- tests/test_aea_builder.py | 22 ++++++------------- tests/test_configurations/test_project.py | 2 +- ..._client_connection_to_aries_cloud_agent.py | 8 +++---- .../test_http_server/test_http_server.py | 3 +-- 8 files changed, 24 insertions(+), 45 deletions(-) diff --git a/aea/cli/fetch.py b/aea/cli/fetch.py index 0a30a7a3b8..c94050f269 100644 --- a/aea/cli/fetch.py +++ b/aea/cli/fetch.py @@ -102,7 +102,7 @@ def fetch_agent_locally( raise click.ClickException( 'Item "{}" already exists in target folder.'.format(public_id.name) ) - else: + if target_dir is not None: os.makedirs(target_path) ctx.clean_paths.append(target_path) diff --git a/tests/conftest.py b/tests/conftest.py index 7d33572db7..10305324a7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -51,7 +51,7 @@ from aea.configurations.base import DEFAULT_PROTOCOL_CONFIG_FILE as PROTOCOL_YAML from aea.configurations.base import DEFAULT_SKILL_CONFIG_FILE as SKILL_YAML from aea.configurations.base import PublicId -from aea.configurations.constants import DEFAULT_CONNECTION, DEFAULT_LEDGER +from aea.configurations.constants import DEFAULT_LEDGER from aea.configurations.loader import load_component_configuration from aea.connections.base import Connection from aea.connections.stub.connection import StubConnection @@ -197,14 +197,6 @@ # 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") -UNKNOWN_SKILL_PUBLIC_ID = PublicId("unknown_author", "unknown_skill", "0.1.0") -LOCAL_CONNECTION_PUBLIC_ID = PublicId("fetchai", "local", "0.1.0") -P2P_CLIENT_CONNECTION_PUBLIC_ID = PublicId("fetchai", "p2p_client", "0.1.0") -HTTP_CLIENT_CONNECTION_PUBLIC_ID = PublicId.from_str("fetchai/http_client:0.10.0") -HTTP_PROTOCOL_PUBLIC_ID = PublicId("fetchai", "http", "0.1.0") -STUB_CONNECTION_PUBLIC_ID = DEFAULT_CONNECTION -DUMMY_PROTOCOL_PUBLIC_ID = PublicId("dummy_author", "dummy", "0.1.0") -DUMMY_CONNECTION_PUBLIC_ID = PublicId("dummy_author", "dummy", "0.1.0") DUMMY_SKILL_PUBLIC_ID = PublicId("dummy_author", "dummy", "0.1.0") DUMMY_SKILL_PATH = os.path.join(CUR_PATH, "data", "dummy_skill", SKILL_YAML) diff --git a/tests/data/dummy_connection/connection.py b/tests/data/dummy_connection/connection.py index 6fc43e633a..a12fab1dbf 100644 --- a/tests/data/dummy_connection/connection.py +++ b/tests/data/dummy_connection/connection.py @@ -33,7 +33,7 @@ class DummyConnection(Connection): """A dummy connection that just stores the messages.""" - connection_id = PublicId("fetchai", "dummy", "0.1.0") + connection_id = PublicId.from_str("fetchai/dummy:0.1.0") def __init__(self, **kwargs): """Initialize.""" diff --git a/tests/test_aea.py b/tests/test_aea.py index daa2dc7364..90eb7b9e11 100644 --- a/tests/test_aea.py +++ b/tests/test_aea.py @@ -32,7 +32,7 @@ from aea import AEA_DIR from aea.aea import AEA from aea.aea_builder import AEABuilder -from aea.configurations.base import PublicId, SkillConfig +from aea.configurations.base import SkillConfig from aea.configurations.constants import DEFAULT_LEDGER, DEFAULT_PRIVATE_KEY_FILE from aea.crypto.wallet import Wallet from aea.exceptions import AEAException @@ -46,7 +46,7 @@ from aea.runtime import RuntimeStates, _StopRuntime from aea.skills.base import Skill, SkillContext -from packages.fetchai.connections.local.connection import LocalNode +from packages.fetchai.connections.local.connection import LocalNode, OEFLocalConnection from packages.fetchai.protocols.fipa.message import FipaMessage from tests.common.utils import ( @@ -160,12 +160,10 @@ def test_react(): builder.add_connection( Path(ROOT_DIR, "packages", "fetchai", "connections", "local") ) - local_connection_id = PublicId.from_str("fetchai/local:0.10.0") + local_connection_id = OEFLocalConnection.connection_id builder.set_default_connection(local_connection_id) builder.add_skill(Path(CUR_PATH, "data", "dummy_skill")) - agent = builder.build( - connection_ids=[PublicId.from_str("fetchai/local:0.10.0")] - ) + agent = builder.build(connection_ids=[local_connection_id]) # This is a temporary workaround to feed the local node to the OEF Local connection # TODO remove it. local_connection = agent.resources.get_connection(local_connection_id) @@ -216,10 +214,10 @@ def test_handle(): builder.add_connection( Path(ROOT_DIR, "packages", "fetchai", "connections", "local") ) - local_connection_id = PublicId.from_str("fetchai/local:0.10.0") + local_connection_id = OEFLocalConnection.connection_id builder.set_default_connection(local_connection_id) builder.add_skill(Path(CUR_PATH, "data", "dummy_skill")) - aea = builder.build(connection_ids=[PublicId.from_str("fetchai/local:0.10.0")]) + aea = builder.build(connection_ids=[local_connection_id]) # This is a temporary workaround to feed the local node to the OEF Local connection # TODO remove it. local_connection = aea.resources.get_connection(local_connection_id) @@ -314,10 +312,10 @@ def test_initialize_aea_programmatically(): builder.add_connection( Path(ROOT_DIR, "packages", "fetchai", "connections", "local") ) - local_connection_id = PublicId.from_str("fetchai/local:0.10.0") + local_connection_id = OEFLocalConnection.connection_id builder.set_default_connection(local_connection_id) builder.add_skill(Path(CUR_PATH, "data", "dummy_skill")) - aea = builder.build(connection_ids=[PublicId.from_str("fetchai/local:0.10.0")]) + aea = builder.build(connection_ids=[local_connection_id]) local_connection = aea.resources.get_connection(local_connection_id) local_connection._local_node = node @@ -493,7 +491,7 @@ def test_add_behaviour_dynamically(): with run_in_thread(agent.start, timeout=5, on_exit=agent.stop): wait_for_condition(lambda: agent.is_running, timeout=10) - dummy_skill_id = PublicId("dummy_author", "dummy", "0.1.0") + dummy_skill_id = DUMMY_SKILL_PUBLIC_ID dummy_skill = agent.resources.get_skill(dummy_skill_id) wait_for_condition(lambda: dummy_skill is not None, timeout=10) diff --git a/tests/test_aea_builder.py b/tests/test_aea_builder.py index adafbe5c7c..e0fb8b9677 100644 --- a/tests/test_aea_builder.py +++ b/tests/test_aea_builder.py @@ -40,11 +40,11 @@ DEFAULT_AEA_CONFIG_FILE, Dependency, ProtocolConfig, - PublicId, SkillConfig, ) from aea.configurations.constants import DEFAULT_LEDGER, DEFAULT_PRIVATE_KEY_FILE from aea.configurations.loader import load_component_configuration +from aea.connections.stub.connection import StubConnection from aea.contracts.base import Contract from aea.exceptions import AEAEnforceError, AEAException from aea.helpers.base import cd @@ -60,6 +60,7 @@ from tests.conftest import ( CUR_PATH, DEFAULT_PRIVATE_KEY_PATH, + DUMMY_SKILL_PUBLIC_ID, ROOT_DIR, _make_dummy_connection, ) @@ -525,11 +526,7 @@ def _new_load(*args, **kwargs): AEAException, match=r"Cannot load skills, there is a cyclic dependency." ): builder._find_import_order( - [ - ComponentId( - ComponentType.SKILL, PublicId("dummy_author", "dummy", "0.1.0") - ), - ], + [ComponentId(ComponentType.SKILL, DUMMY_SKILL_PUBLIC_ID)], Path(os.path.join(CUR_PATH, "data", "dummy_aea")), True, ) @@ -596,9 +593,8 @@ def test_from_project(self): with cd(self._get_cwd()): aea = builder.build() assert aea.name == self.agent_name - stub_connection = aea.resources.get_connection( - PublicId.from_str("fetchai/stub:0.11.0") - ) + stub_connection_id = StubConnection.connection_id + stub_connection = aea.resources.get_connection(stub_connection_id) assert stub_connection.configuration.config == dict( input_file=self.expected_input_file, output_file=self.expected_output_file ) @@ -649,9 +645,7 @@ def test_from_project(self): with cd(self._get_cwd()): aea = builder.build() - dummy_skill = aea.resources.get_skill( - PublicId("dummy_author", "dummy", "0.1.0") - ) + dummy_skill = aea.resources.get_skill(DUMMY_SKILL_PUBLIC_ID) dummy_behaviour = dummy_skill.behaviours["dummy"] assert dummy_behaviour.config == {"behaviour_arg_1": 42, "behaviour_arg_2": "2"} dummy_handler = dummy_skill.handlers["dummy"] @@ -698,9 +692,7 @@ def test_from_project(self): with cd(self._get_cwd()): aea = builder.build() - dummy_skill = aea.resources.get_skill( - PublicId("dummy_author", "dummy", "0.1.0") - ) + dummy_skill = aea.resources.get_skill(DUMMY_SKILL_PUBLIC_ID) assert dummy_skill is None, "Shouldn't have found the skill in Resources." diff --git a/tests/test_configurations/test_project.py b/tests/test_configurations/test_project.py index ebe4190b50..9956a4dfd0 100644 --- a/tests/test_configurations/test_project.py +++ b/tests/test_configurations/test_project.py @@ -38,7 +38,7 @@ def setup(self): self.t = tempfile.mkdtemp() os.chdir(self.t) self.runner = CliRunner() - self.project_public_id = PublicId("fetchai", "my_first_aea", "0.11.0") + self.project_public_id = PublicId.from_str("fetchai/my_first_aea:0.13.0") self.project_path = os.path.join( self.t, self.project_public_id.author, self.project_public_id.name ) 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 a86cc0ce03..6eea59367c 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 @@ -50,8 +50,6 @@ from packages.fetchai.connections.http_client.connection import HTTPClientConnection from packages.fetchai.protocols.http.message import HttpMessage -from tests.conftest import HTTP_PROTOCOL_PUBLIC_ID - logger = logging.getLogger(__name__) @@ -129,7 +127,7 @@ async def test_connecting_to_aca(self): request_envelope = Envelope( to="ACA", sender="AEA", - protocol_id=HTTP_PROTOCOL_PUBLIC_ID, + protocol_id=HttpMessage.protocol_id, message=request_http_message, ) @@ -147,7 +145,7 @@ async def test_connecting_to_aca(self): # check the response assert response_envelop.to == self.aea_address assert response_envelop.sender == "HTTP Server" - assert response_envelop.protocol_id == HTTP_PROTOCOL_PUBLIC_ID + assert response_envelop.protocol_id == HttpMessage.protocol_id decoded_response_message = response_envelop.message assert ( decoded_response_message.performative @@ -224,7 +222,7 @@ async def test_end_to_end_aea_aca(self): request_envelope = Envelope( to="ACA", sender="AEA", - protocol_id=HTTP_PROTOCOL_PUBLIC_ID, + protocol_id=HttpMessage.protocol_id, message=request_http_message, ) diff --git a/tests/test_packages/test_connections/test_http_server/test_http_server.py b/tests/test_packages/test_connections/test_http_server/test_http_server.py index 41999715ff..c217dfcbb6 100644 --- a/tests/test_packages/test_connections/test_http_server/test_http_server.py +++ b/tests/test_packages/test_connections/test_http_server/test_http_server.py @@ -47,7 +47,6 @@ from tests.common.mocks import RegexComparator from tests.conftest import ( - HTTP_PROTOCOL_PUBLIC_ID, ROOT_DIR, UNKNOWN_PROTOCOL_PUBLIC_ID, get_host, @@ -479,7 +478,7 @@ async def test_send_envelope_restricted_to_protocols_fail(self): with patch.object( self.http_connection.channel, "restricted_to_protocols", - new=[HTTP_PROTOCOL_PUBLIC_ID], + new=[HttpMessage.protocol_id], ): with pytest.raises(ValueError): await self.http_connection.send(envelope) From 9234ab9558d573779411566cf7a30270156c225e Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 16:26:11 +0100 Subject: [PATCH 042/155] fix test hashes --- tests/data/dummy_connection/connection.yaml | 2 +- tests/data/hashes.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/data/dummy_connection/connection.yaml b/tests/data/dummy_connection/connection.yaml index 9af2fc2cf4..8329e85c58 100644 --- a/tests/data/dummy_connection/connection.yaml +++ b/tests/data/dummy_connection/connection.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: __init__.py: QmbjcWHRhRiYMqZbgeGkEGVYi8hQ1HnYM8pBYugGKx9YnK - connection.py: QmYn4mpVJTjKUUU9sCDGQHsTzYPeK4mTjwEHepHQddMMjs + connection.py: QmbEPV8CZZFRiHD2A71MHW93AdrF96W9trT797m9YYzMYT fingerprint_ignore_patterns: [] protocols: [] class_name: DummyConnection diff --git a/tests/data/hashes.csv b/tests/data/hashes.csv index 45c2413f06..08f2bb4440 100644 --- a/tests/data/hashes.csv +++ b/tests/data/hashes.csv @@ -1,6 +1,6 @@ dummy_author/agents/dummy_aea,QmdvumQvcNv2yzfZ6MagWJYtUFLoE9q9rAmQwoCGYbtH3w dummy_author/skills/dummy_skill,QmbNGnFv7RuFbZ3Gy5VyRiEiN8bKCPSkzNzRhogXQwUpFd -fetchai/connections/dummy_connection,QmV4RsMfJ3P858RNgXVp9VSQoE6QT78b5WxQ35rRjCy5jR +fetchai/connections/dummy_connection,QmaxQ41E2jYvJgawkTFuzVT3PVrMwhui3sFRV6cCHPvrW9 fetchai/contracts/dummy_contract,QmPMs9VDGZGF8xJ8XBYLVb1xK5XAgiaJr5Gwcq7Vr3TUyu fetchai/skills/dependencies_skill,QmRKwjiPFptKnSB772aD9a5xCDgd956rEJEYo48pNk8ZmZ fetchai/skills/exception_skill,QmQidMBMHE3pyTXuFpPvLBe6y3vQF3bmquGr3yymnaG3mr From 5d57fa2c9cc4e6fe5da5d5723751c3f8c1b16a62 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 17:00:22 +0100 Subject: [PATCH 043/155] start adding public id checks --- aea/configurations/base.py | 42 +++++++++++++++++++ tests/test_cli/tools_for_testing.py | 1 + tests/test_helpers/test_install_dependency.py | 4 +- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/aea/configurations/base.py b/aea/configurations/base.py index 839f7700c3..8307660c29 100644 --- a/aea/configurations/base.py +++ b/aea/configurations/base.py @@ -23,6 +23,7 @@ import functools import gzip import json +import os import pprint import re from abc import ABC, abstractmethod @@ -1109,6 +1110,7 @@ def _check_configuration_consistency(self, directory: Path): """Check that the configuration file is consistent against a directory.""" self.check_fingerprint(directory) self.check_aea_version() + self.check_public_id_consistency(directory) def check_fingerprint(self, directory: Path) -> None: """ @@ -1132,6 +1134,18 @@ def check_aea_version(self): """ _check_aea_version(self) + def check_public_id_consistency(self, directory: Path) -> None: + """ + Check that the public ids in the init file match the config. + + :raises ValueError if: + - the argument is not a valid package directory + - the public ids do not match. + """ + if not directory.exists() or not directory.is_dir(): + raise ValueError("Directory {} is not valid.".format(directory)) + _compare_public_ids(self, directory) + class ConnectionConfig(ComponentConfiguration): """Handle connection configuration.""" @@ -2313,3 +2327,31 @@ def _check_aea_version(package_configuration: PackageConfiguration): package_configuration.aea_version_specifiers, ) ) + + +def _compare_public_ids( + package_configuration: PackageConfiguration, package_directory: Path +) -> None: + """Compare the public ids in config and init file.""" + if package_configuration.package_type != PackageType.SKILL: + return + filename = "__init__.py" + public_id_in_init = _get_public_id_from_file(package_directory, filename) + if public_id_in_init == package_configuration.public_id: # unfinished + raise ValueError( + "The public id specified in {} for package {} does not match the one specific in {}.yaml".format( + filename, package_directory, package_configuration.package_type.value, + ) + ) + + +def _get_public_id_from_file( + package_directory: Path, filename: str +) -> Optional[PublicId]: + """Get the public id from an init if present.""" + public_id = None # Optional[PublicId] + fp = os.path.join(package_directory, filename) + with open(fp, "r") as _: + pass + # unfinished + return public_id diff --git a/tests/test_cli/tools_for_testing.py b/tests/test_cli/tools_for_testing.py index 561d117dad..c113cccf53 100644 --- a/tests/test_cli/tools_for_testing.py +++ b/tests/test_cli/tools_for_testing.py @@ -75,6 +75,7 @@ def __init__(self, *args, **kwargs): self.agent_loader = ConfigLoaderMock() self.clean_paths: List = [] self.obj = self + self.registry_path = "" def set_config(self, key, value): """Set config.""" diff --git a/tests/test_helpers/test_install_dependency.py b/tests/test_helpers/test_install_dependency.py index 781a779289..e73e4949d0 100644 --- a/tests/test_helpers/test_install_dependency.py +++ b/tests/test_helpers/test_install_dependency.py @@ -37,7 +37,7 @@ def test__install_dependency_fails(self, *mocks): "aea.helpers.install_dependency.subprocess.Popen", return_value=result ): with self.assertRaises(AEAException): - install_dependency("test", Dependency("test", "==10.0.0")) + install_dependency("test", Dependency("test", "==10.0.0"), mock.Mock()) def test__install_dependency_ok(self, *mocks): """Test for install_dependency method ok.""" @@ -46,4 +46,4 @@ def test__install_dependency_ok(self, *mocks): with mock.patch( "aea.helpers.install_dependency.subprocess.Popen", return_value=result ): - install_dependency("test", Dependency("test", "==10.0.0")) + install_dependency("test", Dependency("test", "==10.0.0"), mock.Mock()) From 21ad6a3cab2464223f719507d6b0a6a807b94124 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 18:53:37 +0100 Subject: [PATCH 044/155] remove stub connection for agent projects --- aea/cli/publish.py | 8 +--- aea/cli/utils/package_utils.py | 17 ++------ aea/configurations/constants.py | 5 +++ .../agents/aries_alice/aea-config.yaml | 1 - .../agents/aries_faber/aea-config.yaml | 1 - .../agents/car_data_buyer/aea-config.yaml | 1 - .../agents/car_detector/aea-config.yaml | 1 - .../agents/erc1155_client/aea-config.yaml | 1 - .../agents/erc1155_deployer/aea-config.yaml | 1 - .../agents/generic_buyer/aea-config.yaml | 1 - .../agents/generic_seller/aea-config.yaml | 1 - .../fetchai/agents/gym_aea/aea-config.yaml | 1 - .../agents/ml_data_provider/aea-config.yaml | 1 - .../agents/ml_model_trainer/aea-config.yaml | 1 - .../aea-config.yaml | 1 - .../agents/tac_controller/aea-config.yaml | 1 - .../tac_controller_contract/aea-config.yaml | 1 - .../agents/tac_participant/aea-config.yaml | 1 - .../tac_participant_contract/aea-config.yaml | 1 - .../agents/thermometer_aea/aea-config.yaml | 1 - .../agents/thermometer_client/aea-config.yaml | 1 - .../agents/weather_client/aea-config.yaml | 1 - .../agents/weather_station/aea-config.yaml | 1 - packages/hashes.csv | 40 +++++++++---------- 24 files changed, 31 insertions(+), 59 deletions(-) diff --git a/aea/cli/publish.py b/aea/cli/publish.py index 6653fc3161..02092f3039 100644 --- a/aea/cli/publish.py +++ b/aea/cli/publish.py @@ -36,11 +36,7 @@ try_get_item_target_path, ) from aea.configurations.base import CRUDCollection, DEFAULT_AEA_CONFIG_FILE, PublicId -from aea.configurations.constants import ( - DEFAULT_CONNECTION, - DEFAULT_PROTOCOL, - DEFAULT_SKILL, -) +from aea.configurations.constants import LOCAL_PACKAGES @click.command(name="publish") @@ -111,7 +107,7 @@ def _save_agent_locally(ctx: Context) -> None: for item_type_plural in ("connections", "contracts", "protocols", "skills"): dependencies = getattr(ctx.agent_config, item_type_plural) for public_id in dependencies: - if public_id in [DEFAULT_CONNECTION, DEFAULT_PROTOCOL, DEFAULT_SKILL]: + if public_id in LOCAL_PACKAGES: continue _check_is_item_in_local_registry( PublicId.from_str(str(public_id)), diff --git a/aea/cli/utils/package_utils.py b/aea/cli/utils/package_utils.py index b9726e5246..57e787b40d 100644 --- a/aea/cli/utils/package_utils.py +++ b/aea/cli/utils/package_utils.py @@ -22,7 +22,7 @@ import re import shutil from pathlib import Path -from typing import Dict, List, Optional, Set, Tuple +from typing import Dict, Optional, Set, Tuple import click from jsonschema import ValidationError @@ -40,11 +40,7 @@ _compute_fingerprint, _get_default_configuration_file_name_from_type, ) -from aea.configurations.constants import ( - DEFAULT_CONNECTION, - DEFAULT_SKILL, - LOCAL_PROTOCOLS, -) +from aea.configurations.constants import LOCAL_PACKAGES from aea.configurations.loader import ConfigLoader from aea.crypto.helpers import verify_or_create_private_keys from aea.crypto.ledger_apis import DEFAULT_LEDGER_CONFIGS, LedgerApis @@ -514,14 +510,9 @@ def is_local_item(item_public_id: PublicId) -> bool: If the provided item has version 'latest', only the prefixes are compared. Otherwise, the function will try to match the exact version occurrence among the local packages. """ - local_packages: List[PublicId] = [ - DEFAULT_CONNECTION, - *LOCAL_PROTOCOLS, - DEFAULT_SKILL, - ] if item_public_id.package_version.is_latest: - return any(item_public_id.same_prefix(other) for other in local_packages) - return item_public_id in local_packages + return any(item_public_id.same_prefix(other) for other in LOCAL_PACKAGES) + return item_public_id in LOCAL_PACKAGES def try_get_balance( # pylint: disable=unused-argument diff --git a/aea/configurations/constants.py b/aea/configurations/constants.py index 435a026a02..dbad823510 100644 --- a/aea/configurations/constants.py +++ b/aea/configurations/constants.py @@ -36,3 +36,8 @@ SIGNING_PROTOCOL = PublicId.from_str("fetchai/signing:0.5.0") STATE_UPDATE_PROTOCOL = PublicId.from_str("fetchai/state_update:0.5.0") LOCAL_PROTOCOLS = [DEFAULT_PROTOCOL, SIGNING_PROTOCOL, STATE_UPDATE_PROTOCOL] +LOCAL_PACKAGES = [ + DEFAULT_CONNECTION, + *LOCAL_PROTOCOLS, + DEFAULT_SKILL, +] diff --git a/packages/fetchai/agents/aries_alice/aea-config.yaml b/packages/fetchai/agents/aries_alice/aea-config.yaml index 238cde0c38..2d95d6408c 100644 --- a/packages/fetchai/agents/aries_alice/aea-config.yaml +++ b/packages/fetchai/agents/aries_alice/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/http_client:0.10.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 - fetchai/webhook:0.8.0 contracts: [] protocols: diff --git a/packages/fetchai/agents/aries_faber/aea-config.yaml b/packages/fetchai/agents/aries_faber/aea-config.yaml index d46ee79b31..010369de59 100644 --- a/packages/fetchai/agents/aries_faber/aea-config.yaml +++ b/packages/fetchai/agents/aries_faber/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/http_client:0.10.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 - fetchai/webhook:0.8.0 contracts: [] protocols: diff --git a/packages/fetchai/agents/car_data_buyer/aea-config.yaml b/packages/fetchai/agents/car_data_buyer/aea-config.yaml index a1ae162e63..7eb0ef54d7 100644 --- a/packages/fetchai/agents/car_data_buyer/aea-config.yaml +++ b/packages/fetchai/agents/car_data_buyer/aea-config.yaml @@ -11,7 +11,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/car_detector/aea-config.yaml b/packages/fetchai/agents/car_detector/aea-config.yaml index ad95599c0c..f81c48132d 100644 --- a/packages/fetchai/agents/car_detector/aea-config.yaml +++ b/packages/fetchai/agents/car_detector/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/erc1155_client/aea-config.yaml b/packages/fetchai/agents/erc1155_client/aea-config.yaml index c6acd99f47..0e3f3e416a 100644 --- a/packages/fetchai/agents/erc1155_client/aea-config.yaml +++ b/packages/fetchai/agents/erc1155_client/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: - fetchai/erc1155:0.11.0 protocols: diff --git a/packages/fetchai/agents/erc1155_deployer/aea-config.yaml b/packages/fetchai/agents/erc1155_deployer/aea-config.yaml index ba9feab22c..f436701bb6 100644 --- a/packages/fetchai/agents/erc1155_deployer/aea-config.yaml +++ b/packages/fetchai/agents/erc1155_deployer/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: - fetchai/erc1155:0.11.0 protocols: diff --git a/packages/fetchai/agents/generic_buyer/aea-config.yaml b/packages/fetchai/agents/generic_buyer/aea-config.yaml index 9cd4ae49df..2661df0d73 100644 --- a/packages/fetchai/agents/generic_buyer/aea-config.yaml +++ b/packages/fetchai/agents/generic_buyer/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/generic_seller/aea-config.yaml b/packages/fetchai/agents/generic_seller/aea-config.yaml index e3ba00d188..b447c1d8fd 100644 --- a/packages/fetchai/agents/generic_seller/aea-config.yaml +++ b/packages/fetchai/agents/generic_seller/aea-config.yaml @@ -11,7 +11,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/gym_aea/aea-config.yaml b/packages/fetchai/agents/gym_aea/aea-config.yaml index 26621f82c2..a46b7e3c72 100644 --- a/packages/fetchai/agents/gym_aea/aea-config.yaml +++ b/packages/fetchai/agents/gym_aea/aea-config.yaml @@ -9,7 +9,6 @@ fingerprint: {} fingerprint_ignore_patterns: [] connections: - fetchai/gym:0.9.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/ml_data_provider/aea-config.yaml b/packages/fetchai/agents/ml_data_provider/aea-config.yaml index 63c5e846e8..9cf8361db0 100644 --- a/packages/fetchai/agents/ml_data_provider/aea-config.yaml +++ b/packages/fetchai/agents/ml_data_provider/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/ml_model_trainer/aea-config.yaml b/packages/fetchai/agents/ml_model_trainer/aea-config.yaml index 84c5b571f0..df4570b2b0 100644 --- a/packages/fetchai/agents/ml_model_trainer/aea-config.yaml +++ b/packages/fetchai/agents/ml_model_trainer/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/simple_service_registration/aea-config.yaml b/packages/fetchai/agents/simple_service_registration/aea-config.yaml index 371ea34a37..739936d041 100644 --- a/packages/fetchai/agents/simple_service_registration/aea-config.yaml +++ b/packages/fetchai/agents/simple_service_registration/aea-config.yaml @@ -9,7 +9,6 @@ fingerprint_ignore_patterns: [] connections: - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/tac_controller/aea-config.yaml b/packages/fetchai/agents/tac_controller/aea-config.yaml index 214c0eb6a0..cbd15fbc20 100644 --- a/packages/fetchai/agents/tac_controller/aea-config.yaml +++ b/packages/fetchai/agents/tac_controller/aea-config.yaml @@ -9,7 +9,6 @@ fingerprint_ignore_patterns: [] connections: - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/tac_controller_contract/aea-config.yaml b/packages/fetchai/agents/tac_controller_contract/aea-config.yaml index 7b82391cda..7a90a1cb2c 100644 --- a/packages/fetchai/agents/tac_controller_contract/aea-config.yaml +++ b/packages/fetchai/agents/tac_controller_contract/aea-config.yaml @@ -11,7 +11,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: - fetchai/erc1155:0.11.0 protocols: diff --git a/packages/fetchai/agents/tac_participant/aea-config.yaml b/packages/fetchai/agents/tac_participant/aea-config.yaml index 3e36946d77..0c08d17e83 100644 --- a/packages/fetchai/agents/tac_participant/aea-config.yaml +++ b/packages/fetchai/agents/tac_participant/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: - fetchai/erc1155:0.11.0 protocols: diff --git a/packages/fetchai/agents/tac_participant_contract/aea-config.yaml b/packages/fetchai/agents/tac_participant_contract/aea-config.yaml index c0175c0bb0..814de642b5 100644 --- a/packages/fetchai/agents/tac_participant_contract/aea-config.yaml +++ b/packages/fetchai/agents/tac_participant_contract/aea-config.yaml @@ -11,7 +11,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: - fetchai/erc1155:0.11.0 protocols: diff --git a/packages/fetchai/agents/thermometer_aea/aea-config.yaml b/packages/fetchai/agents/thermometer_aea/aea-config.yaml index 02f1efb9c5..2efd804840 100644 --- a/packages/fetchai/agents/thermometer_aea/aea-config.yaml +++ b/packages/fetchai/agents/thermometer_aea/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/thermometer_client/aea-config.yaml b/packages/fetchai/agents/thermometer_client/aea-config.yaml index 6f62d73a4d..7603dfd64b 100644 --- a/packages/fetchai/agents/thermometer_client/aea-config.yaml +++ b/packages/fetchai/agents/thermometer_client/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/weather_client/aea-config.yaml b/packages/fetchai/agents/weather_client/aea-config.yaml index 9c48115aaf..26e883befa 100644 --- a/packages/fetchai/agents/weather_client/aea-config.yaml +++ b/packages/fetchai/agents/weather_client/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/fetchai/agents/weather_station/aea-config.yaml b/packages/fetchai/agents/weather_station/aea-config.yaml index 96572909ab..59ed0b8250 100644 --- a/packages/fetchai/agents/weather_station/aea-config.yaml +++ b/packages/fetchai/agents/weather_station/aea-config.yaml @@ -10,7 +10,6 @@ connections: - fetchai/ledger:0.7.0 - fetchai/p2p_libp2p:0.11.0 - fetchai/soef:0.10.0 -- fetchai/stub:0.11.0 contracts: [] protocols: - fetchai/default:0.7.0 diff --git a/packages/hashes.csv b/packages/hashes.csv index 1c9c2a4ca4..6629d0fc34 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -1,24 +1,24 @@ -fetchai/agents/aries_alice,Qme6aMz6SBhAPrq2tq1CGTWPacM4xmzwN2xK26xXAxd8ND -fetchai/agents/aries_faber,QmQRe4ctBxjHJtpT59GZ5PZ1iWa4BUjZi3en6ngLaZe4aW -fetchai/agents/car_data_buyer,QmU3dPfJCFUWAkgJ3P7F4Hf18qenQ7xoAK1woMM5WQY9Fj -fetchai/agents/car_detector,QmSk6UYgPjtqi6nybSb2YhbANCgCwv5jxnDJERi97sXxje -fetchai/agents/erc1155_client,QmaDiuZyr1H9n5qc5Vm2HMznG8bbEKzqje26wBrSDn7vrZ -fetchai/agents/erc1155_deployer,QmQRrL3LvcW59yGXqtu3cEdZ4WAbpxdhZ3GEUen9pQtht1 -fetchai/agents/generic_buyer,QmReGdHpyZb2aw8Dh7qttKHPDyvLoC8BLYdwziBLpjucsb -fetchai/agents/generic_seller,QmSuGv6xdZWXMJuurMSpGVhrCW7qd6nuXSgrKuViTte5Lo -fetchai/agents/gym_aea,QmWQyAw2Vv3v6uM3UUnfMTi2cvtZHAzeSi3c8N7qPrVfPh -fetchai/agents/ml_data_provider,QmQwnsjMMV2ADK4m4CQEcZTcNEZ1SAwKn3H5mMZA1PJHnf -fetchai/agents/ml_model_trainer,QmbsAvQMdMPLAo3yfky81B14RPdeCdkR26gYGCDrDwcgjY +fetchai/agents/aries_alice,QmWZFLTH5MKGp2z1KtN5CMsLy5F1pRrRVidxBsD9FAuXuN +fetchai/agents/aries_faber,QmRUpK1crK4hCn4qc6YoVrY86fCMzqFsnKQ9ht8BP8G4bt +fetchai/agents/car_data_buyer,QmeEgG2Ys8DkgFZc8eXVjYiYRGsQcQuQHVR5TDtxWGmCoE +fetchai/agents/car_detector,QmW87A2p8FFh2gajQwHY1RGhX2HaJCKtsoKJfW3zTV7YiP +fetchai/agents/erc1155_client,QmWURfj4zBPwTdwYdgraM95u9psecqVgWcY5MMtvfM6jXT +fetchai/agents/erc1155_deployer,QmPw75vzrp3emxHuHXfJXyoF52cjNmRQne3LvLW15X2Eon +fetchai/agents/generic_buyer,QmbeWoP8paaQVaLnfLrF18S8M9jw393EW2xZ5MSCKrmJdn +fetchai/agents/generic_seller,QmYm7j9XjnbtLw9nbM2vSsDMCFdKZwBoM9HE34KdZ5jBcj +fetchai/agents/gym_aea,QmSyFKQ2PXJHA2oZAKf1QU2BFeMhKGi2UBUTdHjB47J5Fo +fetchai/agents/ml_data_provider,Qmbrxss4HtPaHJrRUWwpFoTqV8QGWmbBiu28BYrBMxd8dF +fetchai/agents/ml_model_trainer,QmbEkmVJ6QH26dLWt6yrc8ao2zdSv9cAgRQtPaQo7quPaz fetchai/agents/my_first_aea,QmX2SqJbYeUZ2qLfbhBE5j6N7JmjUYUvRUnmP955YRFfqC -fetchai/agents/simple_service_registration,QmRMLFKpiAkqD2v3CkdgFdZXSBmwv2BJuqgv7wHeB6KAQz -fetchai/agents/tac_controller,QmZUq11HRbxVM69TeMYnoWGBicTQPrkj3Sbf3V7sYtmBAY -fetchai/agents/tac_controller_contract,QmShNpy3JW9ZMLpqHfWABaw7LcF29rz8do7CMYcietxUJ8 -fetchai/agents/tac_participant,QmS9KddcwLTnNsyaefskLBDvHTtXkj2xPEWVG3pjXQnksP -fetchai/agents/tac_participant_contract,QmXrW2V1Z3dPyV7pqiDdeTkepnra6fhBt2rztcQPDCgvG3 -fetchai/agents/thermometer_aea,QmNN7XcjNp67QUEfaSypZsbainmBshAZSqD7itx28ef8g3 -fetchai/agents/thermometer_client,Qmdvvk9HreF5V4zoWLoM64A5n5HjzdxwKVLgTVcyxJHdda -fetchai/agents/weather_client,QmbF8UfJKiJh8hLXuTPoMfK4bgUe1AquMq7nGcgQAZqYn6 -fetchai/agents/weather_station,QmcgbSf97vYTvcV3SrMUf9pt1EnNTNS6EUYbBVnkbVNVKZ +fetchai/agents/simple_service_registration,QmY4341ZYJnZoji3JMX5LteKJeqrMhWEoWnzX5W3GumCtC +fetchai/agents/tac_controller,QmS17whFVGrQHma8yArKQJB2ZNZ3U2pSgZAUpkuZRKYApy +fetchai/agents/tac_controller_contract,QmPxcqq7BY75s1jPYTaaoQg3SqtSwJPFKrWuo5azhbrYqx +fetchai/agents/tac_participant,QmSfwPJTW7e9kGJ2VewtVWKMQxzFynAxpLNKz6e5CdT6bC +fetchai/agents/tac_participant_contract,QmTLSeoGmGrtNb7H31EcWdPNDQVEeaiLL8ucff2ATHHy7C +fetchai/agents/thermometer_aea,QmNUoWKhMDCdcB2zXENumd8KyUuRwMuhUsPF2j1By4JdfZ +fetchai/agents/thermometer_client,QmVFbPazJAcEwtKDp3c21Y3HsceNNkNXw7Hn2EjM6d8f8Y +fetchai/agents/weather_client,QmV32nBgJJ5ZuGnAStb1QAF8EA1BuHRiLWpdNQFKNK8qax +fetchai/agents/weather_station,QmXhBXGV7LaSUK3WBg3PTJdkyeEEcyPwxXdUojXLuQghLP fetchai/connections/gym,QmaVjWPpipys1swkQy64GitynFjyTNZMaVRex4k2RiLnyy fetchai/connections/http_client,QmPL4gBPPkJgX2s3ZpwgvA4LU7zad159nzS3MTTREPLWC3 fetchai/connections/http_server,Qmdc7MCZVmWk76k2pHB2zBwTJ9iokWpuZ8iqzzreBpVEgn From 7355901d8f02dd991f2c85307e0409b739813ac2 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 19:16:06 +0100 Subject: [PATCH 045/155] rename body in base message --- aea/protocols/base.py | 20 +++++------ aea/protocols/default/message.py | 2 +- aea/protocols/default/protocol.yaml | 2 +- aea/protocols/generator/base.py | 3 +- aea/protocols/generator/validate.py | 2 +- aea/protocols/signing/message.py | 2 +- aea/protocols/signing/protocol.yaml | 2 +- aea/protocols/state_update/message.py | 2 +- aea/protocols/state_update/protocol.yaml | 2 +- .../connections/http_client/connection.py | 12 +++---- .../connections/http_client/connection.yaml | 2 +- .../connections/http_server/connection.py | 4 +-- .../connections/http_server/connection.yaml | 2 +- .../fetchai/connections/webhook/connection.py | 2 +- .../connections/webhook/connection.yaml | 2 +- .../fetchai/protocols/contract_api/message.py | 2 +- .../protocols/contract_api/protocol.yaml | 2 +- packages/fetchai/protocols/fipa/message.py | 2 +- packages/fetchai/protocols/fipa/protocol.yaml | 2 +- packages/fetchai/protocols/gym/message.py | 2 +- packages/fetchai/protocols/gym/protocol.yaml | 2 +- packages/fetchai/protocols/http/README.md | 4 +-- packages/fetchai/protocols/http/http.proto | 4 +-- packages/fetchai/protocols/http/http_pb2.py | 18 +++++----- packages/fetchai/protocols/http/message.py | 22 ++++++------ packages/fetchai/protocols/http/protocol.yaml | 10 +++--- .../fetchai/protocols/http/serialization.py | 16 ++++----- .../fetchai/protocols/ledger_api/message.py | 2 +- .../protocols/ledger_api/protocol.yaml | 2 +- .../fetchai/protocols/ml_trade/message.py | 2 +- .../fetchai/protocols/ml_trade/protocol.yaml | 2 +- .../fetchai/protocols/oef_search/message.py | 2 +- .../protocols/oef_search/protocol.yaml | 2 +- packages/fetchai/protocols/tac/message.py | 2 +- packages/fetchai/protocols/tac/protocol.yaml | 2 +- .../fetchai/skills/aries_alice/behaviours.py | 2 +- .../fetchai/skills/aries_alice/handlers.py | 4 +-- .../fetchai/skills/aries_alice/skill.yaml | 4 +-- .../fetchai/skills/aries_faber/behaviours.py | 2 +- .../fetchai/skills/aries_faber/handlers.py | 4 +-- .../fetchai/skills/aries_faber/skill.yaml | 4 +-- packages/fetchai/skills/http_echo/handlers.py | 6 ++-- packages/fetchai/skills/http_echo/skill.yaml | 2 +- packages/hashes.csv | 34 +++++++++---------- ..._client_connection_to_aries_cloud_agent.py | 4 +-- .../test_http_client/test_http_client.py | 14 ++++---- .../test_http_server/test_http_server.py | 16 ++++----- .../test_http_server_and_client.py | 12 +++---- .../test_webhook/test_webhook.py | 4 +-- .../test_packages/test_protocols/test_http.py | 10 +++--- 50 files changed, 142 insertions(+), 143 deletions(-) diff --git a/aea/protocols/base.py b/aea/protocols/base.py index 46058fe971..df954a80ab 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -63,8 +63,8 @@ def __init__(self, body: Optional[Dict] = None, **kwargs): """ self._to = None # type: Optional[Address] self._sender = None # type: Optional[Address] - self._body = copy(body) if body else {} # type: Dict[str, Any] - self._body.update(kwargs) + self.__body = copy(body) if body else {} # type: Dict[str, Any] + self.__body.update(kwargs) try: self._is_consistent() except Exception as e: # pylint: disable=broad-except @@ -116,23 +116,23 @@ def to(self, to: Address) -> None: self._to = to @property - def body(self) -> Dict: + def _body(self) -> Dict: """ Get the body of the message (in dictionary form). :return: the body """ - return self._body + return self.__body - @body.setter - def body(self, body: Dict) -> None: + @_body.setter + def _body(self, body: Dict) -> None: """ Set the body of hte message. :param body: the body. :return: None """ - self._body = body + self.__body = body @property def dialogue_reference(self) -> Tuple[str, str]: @@ -194,7 +194,7 @@ def __eq__(self, other): # and self.message_id == other.message_id # noqa: E800 # and self.target == other.target # noqa: E800 # and self.performative == other.performative # noqa: E800 - and self.body == other.body + and self._body == other._body ) def __str__(self): @@ -204,7 +204,7 @@ def __str__(self): + ",".join( map( lambda key_value: str(key_value[0]) + "=" + str(key_value[1]), - self.body.items(), + self._body.items(), ) ) + ")" @@ -258,7 +258,7 @@ class ProtobufSerializer(Serializer): def encode(msg: Message) -> bytes: """Encode a message into bytes using Protobuf.""" body_json = Struct() - body_json.update(msg.body) # pylint: disable=no-member + body_json.update(msg._body) # pylint: disable=no-member,protected-access body_bytes = body_json.SerializeToString() return body_bytes diff --git a/aea/protocols/default/message.py b/aea/protocols/default/message.py index a11232cff4..fe80da2b27 100644 --- a/aea/protocols/default/message.py +++ b/aea/protocols/default/message.py @@ -172,7 +172,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if self.performative == DefaultMessage.Performative.BYTES: expected_nb_of_contents = 1 diff --git a/aea/protocols/default/protocol.yaml b/aea/protocols/default/protocol.yaml index 04ed35ed0b..55db7a285d 100644 --- a/aea/protocols/default/protocol.yaml +++ b/aea/protocols/default/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: default.proto: QmNzMUvXkBm5bbitR5Yi49ADiwNn1FhCvXqSKKoqAPZyXv default_pb2.py: QmSRFi1s3jcqnPuk4yopJeNuC6o58RL7dvEdt85uns3B3N dialogues.py: Qmc991snbS7DwFxo1cKcq1rQ2uj7y8ukp14kfe2zve387C - message.py: QmVCPyC32cbriCbJE3UxNcvmdKMHgosWbrtPzbN4jLEabX + message.py: QmcJwYBockRXcSHnFFfgqhbbYwC1ioX25yZVQA5aBQJ5Ln serialization.py: QmRF7XPNEk1emKmFMZaYBCF3gr4CdkMXagoSpjQEmnRGG6 fingerprint_ignore_patterns: [] dependencies: diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index a94dd3bddc..d07660fd64 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -818,7 +818,8 @@ def _message_class_str(self) -> str: cls_str += self.indent + "# Check correct contents\n" cls_str += ( - self.indent + "actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE\n" + self.indent + + "actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE\n" ) cls_str += self.indent + "expected_nb_of_contents = 0\n" counter = 1 diff --git a/aea/protocols/generator/validate.py b/aea/protocols/generator/validate.py index 6e21ce2cf0..6235177a87 100644 --- a/aea/protocols/generator/validate.py +++ b/aea/protocols/generator/validate.py @@ -32,7 +32,7 @@ # The following names are reserved for standard message fields and cannot be # used as user defined names for performative or contents -RESERVED_NAMES = {"body", "message_id", "dialogue_reference", "target", "performative"} +RESERVED_NAMES = {"message_id", "dialogue_reference", "target", "performative"} # Regular expression patterns for various fields in protocol specifications PERFORMATIVE_REGEX_PATTERN = "^[a-zA-Z0-9]+$|^[a-zA-Z0-9]+(_?[a-zA-Z0-9]+)+$" diff --git a/aea/protocols/signing/message.py b/aea/protocols/signing/message.py index 38a069a582..9cd6d27f8d 100644 --- a/aea/protocols/signing/message.py +++ b/aea/protocols/signing/message.py @@ -213,7 +213,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if self.performative == SigningMessage.Performative.SIGN_TRANSACTION: expected_nb_of_contents = 2 diff --git a/aea/protocols/signing/protocol.yaml b/aea/protocols/signing/protocol.yaml index 5c0830c962..5faeeccde7 100644 --- a/aea/protocols/signing/protocol.yaml +++ b/aea/protocols/signing/protocol.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: Qmd7JYjcrD95jdYfSZs6j7UX5TPZfPYXuTFrUzS3FHCxhS custom_types.py: Qmc7sAyCQbAaVs5dZf9hFkTrB2BG8VAioWzbyKBAybrQ1J dialogues.py: QmQ1WKs3Dn15oDSwpc4N8hdADLxrn76U4X5SiLAmyGiPPY - message.py: QmZcdSTCGhHnUV3WtRBUWPu66Qa66fv8wfQm994473JAcd + message.py: QmXqpVZmX9fTH2roUiN4PSKgFcq8vebfhPziuxLgfdAKKW serialization.py: QmbXSvWYfEmYyGdfuTXVJYaJfzqVLtMaLR8H3UCLZkvbSC signing.proto: QmcxyLzqhTE9xstAEzCVH17osbLxmSdALx9njmuPjhjrvZ signing_pb2.py: QmY3Ak5ih5zGvKjeZ5EnzrGX4tMYn5dWpjPArQwFeJpVKu diff --git a/aea/protocols/state_update/message.py b/aea/protocols/state_update/message.py index 2c58d72ec7..7628378585 100644 --- a/aea/protocols/state_update/message.py +++ b/aea/protocols/state_update/message.py @@ -183,7 +183,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if self.performative == StateUpdateMessage.Performative.INITIALIZE: expected_nb_of_contents = 4 diff --git a/aea/protocols/state_update/protocol.yaml b/aea/protocols/state_update/protocol.yaml index eba215e7ec..22f005bd84 100644 --- a/aea/protocols/state_update/protocol.yaml +++ b/aea/protocols/state_update/protocol.yaml @@ -9,7 +9,7 @@ fingerprint: README.md: QmZaiA3tRSsvofPcAdjKEZZh9RAyZL9Wk8vXHUoGy9enLi __init__.py: QmUrvqDr24Ph1nnUqjTUPh9QoftuTsef3Dj3yzPUMY38fu dialogues.py: Qmd59WgpFccLn1zhpLdwm3zDCmCsjSoQXVn6M7PgFwwkgR - message.py: QmPAi5XBDsH7Sk1HMK7c7vXjrTbdJ6JYhAtHqoKk9whbAu + message.py: QmUxjgCANzkt5GxxojDNCzzhWY14mdBxZgMQB1fAHESdhz serialization.py: QmciaNPHkpyxWLYVtBPnYkKHj6Ur9E3CPJ9QvWbXFD91Yw state_update.proto: QmdmEUSa7PDxJ98ZmGE7bLFPmUJv8refgbkHPejw6uDdwD state_update_pb2.py: QmQr5KXhapRv9AnfQe7Xbr5bBqYWp9DEMLjxX8UWmK75Z4 diff --git a/packages/fetchai/connections/http_client/connection.py b/packages/fetchai/connections/http_client/connection.py index ce8697dc38..6c4902083b 100644 --- a/packages/fetchai/connections/http_client/connection.py +++ b/packages/fetchai/connections/http_client/connection.py @@ -228,7 +228,7 @@ async def _http_request_task(self, request_envelope: Envelope) -> None: status_code=resp.status, headers=resp.headers, status_text=resp.reason, - bodyy=resp._body # pylint: disable=protected-access + body=resp._body # pylint: disable=protected-access if resp._body is not None # pylint: disable=protected-access else b"", dialogue=dialogue, @@ -239,7 +239,7 @@ async def _http_request_task(self, request_envelope: Envelope) -> None: status_code=self.DEFAULT_EXCEPTION_CODE, headers={}, status_text="HTTPConnection request error.", - bodyy=format_exc().encode("utf-8"), + body=format_exc().encode("utf-8"), dialogue=dialogue, ) @@ -262,7 +262,7 @@ async def _perform_http_request( method=request_http_message.method, url=request_http_message.url, headers=request_http_message.headers, - data=request_http_message.bodyy, + data=request_http_message.body, ) as resp: await resp.read() return resp @@ -352,7 +352,7 @@ def to_envelope( status_code: int, headers: dict, status_text: Optional[Any], - bodyy: bytes, + body: bytes, dialogue: HttpDialogue, ) -> Envelope: """ @@ -362,7 +362,7 @@ def to_envelope( :param status_code: the http status code, int :param headers: dict of http response headers :param status_text: the http status_text, str - :param bodyy: bytes of http response content + :param body: bytes of http response content :return: Envelope with http response data. """ @@ -372,7 +372,7 @@ def to_envelope( status_code=status_code, headers=json.dumps(dict(headers.items())), status_text=status_text, - bodyy=bodyy, + body=body, version="", ) envelope = Envelope( diff --git a/packages/fetchai/connections/http_client/connection.yaml b/packages/fetchai/connections/http_client/connection.yaml index fd6413199d..81d3d2c604 100644 --- a/packages/fetchai/connections/http_client/connection.yaml +++ b/packages/fetchai/connections/http_client/connection.yaml @@ -9,7 +9,7 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmYFN1K5v8t5Jn7jBWFQC1dULB3AK8jNiCeZgBChobRZT8 __init__.py: QmPdKAks8A6XKAgZiopJzPZYXJumTeUqChd8UorqmLQQPU - connection.py: QmRYrhEHdfjcct7KEzDZvbh2GAAhApFCYBf8uaS1HCkFvG + connection.py: QmXA3YwxbzxgTXfGRy9DktDNyAdrsWauCqqAQbRhxUunQd fingerprint_ignore_patterns: [] protocols: - fetchai/http:0.7.0 diff --git a/packages/fetchai/connections/http_server/connection.py b/packages/fetchai/connections/http_server/connection.py index 6dd5b86102..03be5ee8a9 100644 --- a/packages/fetchai/connections/http_server/connection.py +++ b/packages/fetchai/connections/http_server/connection.py @@ -191,7 +191,7 @@ def to_envelope_and_set_id( method=self.method, url=url, headers=self.parameters.header, - bodyy=self.body if self.body is not None else b"", + body=self.body if self.body is not None else b"", version="", ) dialogue = cast(HttpDialogue, http_dialogue) @@ -229,7 +229,7 @@ def from_message(cls, http_message: HttpMessage) -> "Response": response = cls( status=http_message.status_code, reason=http_message.status_text, - body=http_message.bodyy, + body=http_message.body, headers=headers, ) else: # pragma: nocover diff --git a/packages/fetchai/connections/http_server/connection.yaml b/packages/fetchai/connections/http_server/connection.yaml index 7aa3f5451f..e5d99853c4 100644 --- a/packages/fetchai/connections/http_server/connection.yaml +++ b/packages/fetchai/connections/http_server/connection.yaml @@ -9,7 +9,7 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmNq1yYrHzeudna7vebSaHtvnCeRp4XvhvTiZfW1A54Ums __init__.py: Qmb6JEAkJeb5JweqrSGiGoQp1vGXqddjGgb9WMkm2phTgA - connection.py: QmfGG7pydLZLTGWoKvRmP4ERyfjawdYgb54jV1DQdRPNNP + connection.py: Qme6VnZNHpCeG2uVztxA9w61pTb1RUSRw8ovjEq9zXUuC7 fingerprint_ignore_patterns: [] protocols: - fetchai/http:0.7.0 diff --git a/packages/fetchai/connections/webhook/connection.py b/packages/fetchai/connections/webhook/connection.py index 525a31a369..39224a2350 100644 --- a/packages/fetchai/connections/webhook/connection.py +++ b/packages/fetchai/connections/webhook/connection.py @@ -205,7 +205,7 @@ async def to_envelope(self, request: web.Request) -> Envelope: url=str(request.url), version=version, headers=json.dumps(dict(request.headers)), - bodyy=payload_bytes if payload_bytes is not None else b"", + body=payload_bytes if payload_bytes is not None else b"", ) envelope = Envelope( to=http_message.to, diff --git a/packages/fetchai/connections/webhook/connection.yaml b/packages/fetchai/connections/webhook/connection.yaml index ec7cecc9bf..cee604a206 100644 --- a/packages/fetchai/connections/webhook/connection.yaml +++ b/packages/fetchai/connections/webhook/connection.yaml @@ -8,7 +8,7 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmWo3KYEYD81V9wiT13dv54aWVB9Q6bHoeNaBSgUKGLbgA __init__.py: QmWUKSmXaBgGMvKgdmzKmMjCx43BnrfW6og2n3afNoAALq - connection.py: QmWgBibWAQz45vzzAxCyL8g5F9WA8o19DCWcXUkcfYzdcw + connection.py: Qmd5GnFuT4WrDVbJELxGS2U7RsSVi5fx4t3TMVkYMZAeic fingerprint_ignore_patterns: [] protocols: - fetchai/http:0.7.0 diff --git a/packages/fetchai/protocols/contract_api/message.py b/packages/fetchai/protocols/contract_api/message.py index 8f7298b1f4..3d90792393 100644 --- a/packages/fetchai/protocols/contract_api/message.py +++ b/packages/fetchai/protocols/contract_api/message.py @@ -245,7 +245,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if ( self.performative diff --git a/packages/fetchai/protocols/contract_api/protocol.yaml b/packages/fetchai/protocols/contract_api/protocol.yaml index 7d9ef6e078..01a0530a69 100644 --- a/packages/fetchai/protocols/contract_api/protocol.yaml +++ b/packages/fetchai/protocols/contract_api/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: contract_api_pb2.py: QmVT6Fv53KyFhshNFEo38seHypd7Y62psBaF8NszV8iRHK custom_types.py: QmcMtzozPhcL2H9hDmnUd9bHDE3ihy7HQgvGKkhqxdAXf4 dialogues.py: QmTjXH8JUtziUFDawKsSTYE5dxn1n1FmMPeWexyxiPYd6k - message.py: QmWqJTFiycWzCtSGBMshbt8EMeEvp54PQ6vxTUFKeM1wCJ + message.py: QmNX2cT6T1HyJqKEp8b6JWvfSWxRuWDyt7mwfXs66KVetY serialization.py: QmQzS931wTQNt758wvnB81aD16hUMQ19WVK6f1p1XuEwUp fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/fipa/message.py b/packages/fetchai/protocols/fipa/message.py index 6d43a2a647..82f75e3221 100644 --- a/packages/fetchai/protocols/fipa/message.py +++ b/packages/fetchai/protocols/fipa/message.py @@ -187,7 +187,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if self.performative == FipaMessage.Performative.CFP: expected_nb_of_contents = 1 diff --git a/packages/fetchai/protocols/fipa/protocol.yaml b/packages/fetchai/protocols/fipa/protocol.yaml index ea20f3d715..fb006a4e7a 100644 --- a/packages/fetchai/protocols/fipa/protocol.yaml +++ b/packages/fetchai/protocols/fipa/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: dialogues.py: QmWaciW35ZTVeTeLWeyp3hjehKkWB5ZY7Di8N8cDH8Mjwb fipa.proto: QmP7JqnuQSQ9BDcKkscrTydKEX4wFBoyFaY1bkzGkamcit fipa_pb2.py: QmZMkefJLrb3zJKoimb6a9tdpxDBhc8rR2ghimqg7gZ471 - message.py: QmRM7yKj2bJCq3bgqFGotU1YVnX6FLP2VYj9vTLNuiTjG2 + message.py: QmW1Y9SZvRC2cL5NLY5Tho8AzZgksw1vXHpA8BeGoyjPw6 serialization.py: QmQMb8F8hJm1gkJFSPPCtDAoxSX3bFkshtzRgDWfWB8ynd fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/gym/message.py b/packages/fetchai/protocols/gym/message.py index a597e22c5b..a7a77a8904 100644 --- a/packages/fetchai/protocols/gym/message.py +++ b/packages/fetchai/protocols/gym/message.py @@ -194,7 +194,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if self.performative == GymMessage.Performative.ACT: expected_nb_of_contents = 2 diff --git a/packages/fetchai/protocols/gym/protocol.yaml b/packages/fetchai/protocols/gym/protocol.yaml index 3fcf977885..e33d96f451 100644 --- a/packages/fetchai/protocols/gym/protocol.yaml +++ b/packages/fetchai/protocols/gym/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: dialogues.py: QmdCzcFfyPF43U2SoxwshG5p4hd6dK49m6GYKduDHbnNPo gym.proto: QmQGF9Xz4Z93wmhdKoztzxjo5pS4SsAWe2TQdvZCLuzdGC gym_pb2.py: QmSTz7xrL8ryqzR1Sgu1NpR6PmW7GUhBGnN2qYc8m8NCcN - message.py: Qme6webfcfiVa3sCb9WpV6mGVLudS9YTx4tWmEbnwr1qLx + message.py: QmPqRM35ATqx8nXg7ji9rqBrqT5eiQgbU7tihh6GZC3MNM serialization.py: QmPNsgeGkagzQuAyq97fcGXA2LoPwiuq8X1tcfVXoLwnSV fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/http/README.md b/packages/fetchai/protocols/http/README.md index 225870facf..22a9536616 100644 --- a/packages/fetchai/protocols/http/README.md +++ b/packages/fetchai/protocols/http/README.md @@ -20,13 +20,13 @@ speech_acts: url: pt:str version: pt:str headers: pt:str - bodyy: pt:bytes + body: pt:bytes response: version: pt:str status_code: pt:int status_text: pt:str headers: pt:str - bodyy: pt:bytes + body: pt:bytes ... --- initiation: [request] diff --git a/packages/fetchai/protocols/http/http.proto b/packages/fetchai/protocols/http/http.proto index 0b259bc3b9..9ddf9f9317 100644 --- a/packages/fetchai/protocols/http/http.proto +++ b/packages/fetchai/protocols/http/http.proto @@ -10,7 +10,7 @@ message HttpMessage{ string url = 2; string version = 3; string headers = 4; - bytes bodyy = 5; + bytes body = 5; } message Response_Performative{ @@ -18,7 +18,7 @@ message HttpMessage{ int32 status_code = 2; string status_text = 3; string headers = 4; - bytes bodyy = 5; + bytes body = 5; } diff --git a/packages/fetchai/protocols/http/http_pb2.py b/packages/fetchai/protocols/http/http_pb2.py index 98a98aa43e..317487a93c 100644 --- a/packages/fetchai/protocols/http/http_pb2.py +++ b/packages/fetchai/protocols/http/http_pb2.py @@ -17,7 +17,7 @@ package="fetch.aea.Http", syntax="proto3", serialized_options=None, - serialized_pb=b'\n\nhttp.proto\x12\x0e\x66\x65tch.aea.Http"\xf1\x03\n\x0bHttpMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x43\n\x07request\x18\x05 \x01(\x0b\x32\x30.fetch.aea.Http.HttpMessage.Request_PerformativeH\x00\x12\x45\n\x08response\x18\x06 \x01(\x0b\x32\x31.fetch.aea.Http.HttpMessage.Response_PerformativeH\x00\x1a\x64\n\x14Request_Performative\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\r\n\x05\x62odyy\x18\x05 \x01(\x0c\x1ar\n\x15Response_Performative\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x13\n\x0bstatus_code\x18\x02 \x01(\x05\x12\x13\n\x0bstatus_text\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\r\n\x05\x62odyy\x18\x05 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3', + serialized_pb=b'\n\nhttp.proto\x12\x0e\x66\x65tch.aea.Http"\xef\x03\n\x0bHttpMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x43\n\x07request\x18\x05 \x01(\x0b\x32\x30.fetch.aea.Http.HttpMessage.Request_PerformativeH\x00\x12\x45\n\x08response\x18\x06 \x01(\x0b\x32\x31.fetch.aea.Http.HttpMessage.Response_PerformativeH\x00\x1a\x63\n\x14Request_Performative\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\x0c\n\x04\x62ody\x18\x05 \x01(\x0c\x1aq\n\x15Response_Performative\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x13\n\x0bstatus_code\x18\x02 \x01(\x05\x12\x13\n\x0bstatus_text\x18\x03 \x01(\t\x12\x0f\n\x07headers\x18\x04 \x01(\t\x12\x0c\n\x04\x62ody\x18\x05 \x01(\x0c\x42\x0e\n\x0cperformativeb\x06proto3', ) @@ -101,8 +101,8 @@ file=DESCRIPTOR, ), _descriptor.FieldDescriptor( - name="bodyy", - full_name="fetch.aea.Http.HttpMessage.Request_Performative.bodyy", + name="body", + full_name="fetch.aea.Http.HttpMessage.Request_Performative.body", index=4, number=5, type=12, @@ -128,7 +128,7 @@ extension_ranges=[], oneofs=[], serialized_start=296, - serialized_end=396, + serialized_end=395, ) _HTTPMESSAGE_RESPONSE_PERFORMATIVE = _descriptor.Descriptor( @@ -211,8 +211,8 @@ file=DESCRIPTOR, ), _descriptor.FieldDescriptor( - name="bodyy", - full_name="fetch.aea.Http.HttpMessage.Response_Performative.bodyy", + name="body", + full_name="fetch.aea.Http.HttpMessage.Response_Performative.body", index=4, number=5, type=12, @@ -237,8 +237,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=398, - serialized_end=512, + serialized_start=397, + serialized_end=510, ) _HTTPMESSAGE = _descriptor.Descriptor( @@ -377,7 +377,7 @@ ), ], serialized_start=31, - serialized_end=528, + serialized_end=526, ) _HTTPMESSAGE_REQUEST_PERFORMATIVE.containing_type = _HTTPMESSAGE diff --git a/packages/fetchai/protocols/http/message.py b/packages/fetchai/protocols/http/message.py index 3dc9b5e469..f228944b9c 100644 --- a/packages/fetchai/protocols/http/message.py +++ b/packages/fetchai/protocols/http/message.py @@ -102,10 +102,10 @@ def target(self) -> int: return cast(int, self.get("target")) @property - def bodyy(self) -> bytes: - """Get the 'bodyy' content from the message.""" - enforce(self.is_set("bodyy"), "'bodyy' content is not set.") - return cast(bytes, self.get("bodyy")) + def body(self) -> bytes: + """Get the 'body' content from the message.""" + enforce(self.is_set("body"), "'body' content is not set.") + return cast(bytes, self.get("body")) @property def headers(self) -> str: @@ -187,7 +187,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if self.performative == HttpMessage.Performative.REQUEST: expected_nb_of_contents = 5 @@ -216,9 +216,9 @@ def _is_consistent(self) -> bool: ), ) enforce( - type(self.bodyy) == bytes, - "Invalid type for content 'bodyy'. Expected 'bytes'. Found '{}'.".format( - type(self.bodyy) + type(self.body) == bytes, + "Invalid type for content 'body'. Expected 'bytes'. Found '{}'.".format( + type(self.body) ), ) elif self.performative == HttpMessage.Performative.RESPONSE: @@ -248,9 +248,9 @@ def _is_consistent(self) -> bool: ), ) enforce( - type(self.bodyy) == bytes, - "Invalid type for content 'bodyy'. Expected 'bytes'. Found '{}'.".format( - type(self.bodyy) + type(self.body) == bytes, + "Invalid type for content 'body'. Expected 'bytes'. Found '{}'.".format( + type(self.body) ), ) diff --git a/packages/fetchai/protocols/http/protocol.yaml b/packages/fetchai/protocols/http/protocol.yaml index b7aa67fa50..e9b46f9c8e 100644 --- a/packages/fetchai/protocols/http/protocol.yaml +++ b/packages/fetchai/protocols/http/protocol.yaml @@ -6,13 +6,13 @@ description: A protocol for HTTP requests and responses. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: - README.md: QmagZXt6bzR1iYQtLfHFwHELAZaLnk4uy3w2LU94ozPqDN + README.md: QmPA98ief12i3k3qgb5GvRvnedPr8YUdVcMdmK4QQW97Jj __init__.py: QmWzgWYrnS7PhjYrrx2mykLoaCbb7rDnVRcDqifsRukTy4 dialogues.py: QmdwTehjCppcxyDid8m6zuHY5YwprUhato88R9Zdm9aXaM - http.proto: QmdTUTvvxGxMxSTB67AXjMUSDLdsxBYiSuJNVxHuLKB1jS - http_pb2.py: QmYYKqdwiueq54EveL9WXn216FXLSQ6XGJJHoiJxwJjzHC - message.py: QmQ9V7Q36bxz14y8YhUJgGSBCABrEfwzYt4YaGzK1DakTw - serialization.py: QmTq34k2PD6Ybhk8x1EboY3UcNp8r3H6Tb3egZsWJN9nFv + http.proto: QmXKezC89iLmiY7h82i61QHWuAkCUXwGeZNQqTe3eYz3oL + http_pb2.py: QmYPwt6mrC1RK3skv3DXCrpQmGiS8XzjjGAGrmJrhM2J4w + message.py: QmSXTUbrXBySCVfy6wPt58e5RfjfPMduHLTBFcB9pueMAR + serialization.py: QmfNp8v13Z2aBoKNFJnUs8ctJwwT3kd5wd2KSdBs9wViaV fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/http/serialization.py b/packages/fetchai/protocols/http/serialization.py index 123479cc69..d8baebef30 100644 --- a/packages/fetchai/protocols/http/serialization.py +++ b/packages/fetchai/protocols/http/serialization.py @@ -57,8 +57,8 @@ def encode(msg: Message) -> bytes: performative.version = version headers = msg.headers performative.headers = headers - bodyy = msg.bodyy - performative.bodyy = bodyy + body = msg.body + performative.body = body http_msg.request.CopyFrom(performative) elif performative_id == HttpMessage.Performative.RESPONSE: performative = http_pb2.HttpMessage.Response_Performative() # type: ignore @@ -70,8 +70,8 @@ def encode(msg: Message) -> bytes: performative.status_text = status_text headers = msg.headers performative.headers = headers - bodyy = msg.bodyy - performative.bodyy = bodyy + body = msg.body + performative.body = body http_msg.response.CopyFrom(performative) else: raise ValueError("Performative not valid: {}".format(performative_id)) @@ -108,8 +108,8 @@ def decode(obj: bytes) -> Message: performative_content["version"] = version headers = http_pb.request.headers performative_content["headers"] = headers - bodyy = http_pb.request.bodyy - performative_content["bodyy"] = bodyy + body = http_pb.request.body + performative_content["body"] = body elif performative_id == HttpMessage.Performative.RESPONSE: version = http_pb.response.version performative_content["version"] = version @@ -119,8 +119,8 @@ def decode(obj: bytes) -> Message: performative_content["status_text"] = status_text headers = http_pb.response.headers performative_content["headers"] = headers - bodyy = http_pb.response.bodyy - performative_content["bodyy"] = bodyy + body = http_pb.response.body + performative_content["body"] = body else: raise ValueError("Performative not valid: {}.".format(performative_id)) diff --git a/packages/fetchai/protocols/ledger_api/message.py b/packages/fetchai/protocols/ledger_api/message.py index 787b256cb4..35e7801d32 100644 --- a/packages/fetchai/protocols/ledger_api/message.py +++ b/packages/fetchai/protocols/ledger_api/message.py @@ -259,7 +259,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if self.performative == LedgerApiMessage.Performative.GET_BALANCE: expected_nb_of_contents = 2 diff --git a/packages/fetchai/protocols/ledger_api/protocol.yaml b/packages/fetchai/protocols/ledger_api/protocol.yaml index bd265aa141..9e67559e71 100644 --- a/packages/fetchai/protocols/ledger_api/protocol.yaml +++ b/packages/fetchai/protocols/ledger_api/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: dialogues.py: QmRtWkAfR9WTvygMJ36R758RzdY2mGQs2fgtHCfjxmeaHy ledger_api.proto: QmfLcv7jJcGJ1gAdCMqsyxJcRud7RaTWteSXHL5NvGuViP ledger_api_pb2.py: QmQhM848REJTDKDoiqxkTniChW8bNNm66EtwMRkvVdbMry - message.py: QmTZ6meh1Rcqi7mXDSWYQs4PyuEuEZSLrgvMYq7nyBLgE4 + message.py: QmcJjDMxh1BqfgM1JFVMY4VkbG5MRWuXWtRt9EYuEEXZxz serialization.py: QmRuTqH9t9JtsnpWX5wpC438DdRxWKiqAB2u9fvQ2oy1GE fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/ml_trade/message.py b/packages/fetchai/protocols/ml_trade/message.py index b5fa56f23f..bf90ed9590 100644 --- a/packages/fetchai/protocols/ml_trade/message.py +++ b/packages/fetchai/protocols/ml_trade/message.py @@ -180,7 +180,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if self.performative == MlTradeMessage.Performative.CFP: expected_nb_of_contents = 1 diff --git a/packages/fetchai/protocols/ml_trade/protocol.yaml b/packages/fetchai/protocols/ml_trade/protocol.yaml index ee329cb2a4..5e35c17746 100644 --- a/packages/fetchai/protocols/ml_trade/protocol.yaml +++ b/packages/fetchai/protocols/ml_trade/protocol.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: QmcCS9uUQTTS2w85dTNiN5rQ14wyBhmBkr7pPPPcbLphcn custom_types.py: QmPa6mxbN8WShsniQxJACfzAPRjGzYLbUFGoVU4N9DewUw dialogues.py: QmVvP34aKWEtHrKmccNMvEdDnx5B7xpE5aEGzr6GU2u8UK - message.py: QmPHXQv2ta71kW9Q4sy6zj1zVTqGSF4KjFG1VZsAxNNADo + message.py: QmRJwy6cJVWeNwdDT5bBgNnGh1Ymsm4ri9DwYyHSWEAZVT ml_trade.proto: QmeB21MQduEGQCrtiYZQzPpRqHL4CWEkvvcaKZ9GsfE8f6 ml_trade_pb2.py: QmZVvugPysR1og6kWCJkvo3af2s9pQRHfuj4BptE7gU1EU serialization.py: QmTamQzo8ZNM6T7QnsA7qNzs2uJ7CHTUczzCsHwU9Q6Z5K diff --git a/packages/fetchai/protocols/oef_search/message.py b/packages/fetchai/protocols/oef_search/message.py index 0374e09dc8..3657ea29ea 100644 --- a/packages/fetchai/protocols/oef_search/message.py +++ b/packages/fetchai/protocols/oef_search/message.py @@ -211,7 +211,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if self.performative == OefSearchMessage.Performative.REGISTER_SERVICE: expected_nb_of_contents = 1 diff --git a/packages/fetchai/protocols/oef_search/protocol.yaml b/packages/fetchai/protocols/oef_search/protocol.yaml index 5a7aa6aab6..0f14c6d8c3 100644 --- a/packages/fetchai/protocols/oef_search/protocol.yaml +++ b/packages/fetchai/protocols/oef_search/protocol.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: Qmdr5ks5X4YtnpH6yKUcNu9uouyv3EGmrKFhyvNH7ZBjvT custom_types.py: QmYAkKYj9gGHaij7uTejoJe9KRhNcsU4sJC1utMfhUYhg3 dialogues.py: QmQPLnW3jAs6tLLmhkX4C7texGRHM9bfdjs83dUH5TkJ4v - message.py: QmZfLEzhveXqvWLuwQUoAxCarRgahsxkkHVtYEhv3LLKLw + message.py: QmSL6StDCZzENDT8VrGSjYzNe8gQCvujpMMuHoFfVEEJ6F oef_search.proto: QmNU8WsxT6XNFFneKKeDaZkNn3CEFDfZQkmKv9TyhyxzDB oef_search_pb2.py: QmSAFT1xxYRzJU6h1aFVDuYcx672sZ2vzV6c2ico7f4BLK serialization.py: QmU3ipyvogbpkFuQki6xqscdiPahDVYw4sBaPHaH3LVvwJ diff --git a/packages/fetchai/protocols/tac/message.py b/packages/fetchai/protocols/tac/message.py index cf6d759a69..ae06abf592 100644 --- a/packages/fetchai/protocols/tac/message.py +++ b/packages/fetchai/protocols/tac/message.py @@ -304,7 +304,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE expected_nb_of_contents = 0 if self.performative == TacMessage.Performative.REGISTER: expected_nb_of_contents = 1 diff --git a/packages/fetchai/protocols/tac/protocol.yaml b/packages/fetchai/protocols/tac/protocol.yaml index 9ee1d4ab62..94d4d19256 100644 --- a/packages/fetchai/protocols/tac/protocol.yaml +++ b/packages/fetchai/protocols/tac/protocol.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmSAC7PGra9fig8RhhF1j3XEVpgie9UZNNYPc2AB9Kx9xJ custom_types.py: QmXQATfnvuCpt4FicF4QcqCcLj9PQNsSHjCBvVQknWpyaN dialogues.py: QmQvuivrjhVFu7pjSFfv6FrWwVeBC7p8Hm3P4gjCnVx5Ym - message.py: QmZyNfMH3tfhfCCsAMRpxQkkGcqjezzdSqTSkvsbVA6fWy + message.py: Qmdir4URTTh2YvUgPg8xdSbnER63j6pjkZi3RBTQonhT17 serialization.py: QmTk2Jp19dQ4SJdjSHAr8wbxw4rQSMheSuf1XzXG8CaoB4 tac.proto: QmdpPZNhUW593qVNVoSTWZgd9R69bmBbw6Y9xjzYpvuDvV tac_pb2.py: QmUwW3kixKwD2o1RRdq4NoNoihPb5BXKKRngWXztq32fea diff --git a/packages/fetchai/skills/aries_alice/behaviours.py b/packages/fetchai/skills/aries_alice/behaviours.py index e505883362..f00789f572 100644 --- a/packages/fetchai/skills/aries_alice/behaviours.py +++ b/packages/fetchai/skills/aries_alice/behaviours.py @@ -77,7 +77,7 @@ def send_http_request_message( url=url, headers="", version="", - bodyy=b"" if content is None else json.dumps(content).encode("utf-8"), + body=b"" if content is None else json.dumps(content).encode("utf-8"), ) # send self.context.outbox.put_message( diff --git a/packages/fetchai/skills/aries_alice/handlers.py b/packages/fetchai/skills/aries_alice/handlers.py index 5bb7f3b52b..aff40d300f 100644 --- a/packages/fetchai/skills/aries_alice/handlers.py +++ b/packages/fetchai/skills/aries_alice/handlers.py @@ -188,7 +188,7 @@ def handle(self, message: Message) -> None: "alice -> http_handler -> handle() -> REQUEST: something went wrong when adding the incoming HTTP webhook request message to the dialogue." ) return - content_bytes = message.bodyy + content_bytes = message.body content = json.loads(content_bytes) self.context.logger.info("Received webhook message content:" + str(content)) if "connection_id" in content: @@ -205,7 +205,7 @@ def handle(self, message: Message) -> None: "alice -> http_handler -> handle() -> RESPONSE: something went wrong when adding the incoming HTTP response message to the dialogue." ) return - content_bytes = message.bodyy + content_bytes = message.body content = content_bytes.decode("utf-8") if "Error" in content: self.context.logger.error( diff --git a/packages/fetchai/skills/aries_alice/skill.yaml b/packages/fetchai/skills/aries_alice/skill.yaml index 90afb606d5..c8e16a9515 100644 --- a/packages/fetchai/skills/aries_alice/skill.yaml +++ b/packages/fetchai/skills/aries_alice/skill.yaml @@ -9,9 +9,9 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmfS1ezD77No8WQkvrkPs4oSXHFbULRxatGzRhMbSMntSx __init__.py: Qma8qSTU34ADKWskBwQKQLGNpe3xDKNgjNQ6Q4MxUnKa3Q - behaviours.py: QmTdJbrP1N3W1M6CLDyPFc6erfcrhnbRJtDNN6ZuY9eRUt + behaviours.py: QmWdgTikAdSzc9NPM3kKMWRQjBEGpW3kcuAGgh62rpH3Em dialogues.py: QmbCkYZ9mQK6az3qWVMuYmpy5bapq2szYigUbVzE2GgiJi - handlers.py: QmTtqM5oWBEAZcHdTuwuPtbiZZGWontMNEtmDxcccS2u2Y + handlers.py: QmPzwQazBWC1Zuz3UfRpi2P4ahHYCuvZnEho2AUZEtLRMq strategy.py: QmPUPJvc9idv1KeJE67PKze4E6TpSzjkvFjPG1FRMPAhaL fingerprint_ignore_patterns: [] contracts: [] diff --git a/packages/fetchai/skills/aries_faber/behaviours.py b/packages/fetchai/skills/aries_faber/behaviours.py index 629536e422..687103acfd 100644 --- a/packages/fetchai/skills/aries_faber/behaviours.py +++ b/packages/fetchai/skills/aries_faber/behaviours.py @@ -72,7 +72,7 @@ def send_http_request_message( url=url, headers="", version="", - bodyy=b"" if content is None else json.dumps(content).encode("utf-8"), + body=b"" if content is None else json.dumps(content).encode("utf-8"), ) # send self.context.outbox.put_message(message=request_http_message) diff --git a/packages/fetchai/skills/aries_faber/handlers.py b/packages/fetchai/skills/aries_faber/handlers.py index 76c395f34b..e1f767738b 100644 --- a/packages/fetchai/skills/aries_faber/handlers.py +++ b/packages/fetchai/skills/aries_faber/handlers.py @@ -192,7 +192,7 @@ def handle(self, message: Message) -> None: ) return - content_bytes = message.bodyy # type: ignore + content_bytes = message.body # type: ignore content = json.loads(content_bytes) self.context.logger.info("Received message: " + str(content)) if "version" in content: # response to /status @@ -238,7 +238,7 @@ def handle(self, message: Message) -> None: "something went wrong when adding the incoming HTTP webhook request message to the dialogue." ) return - content_bytes = message.bodyy + content_bytes = message.body content = json.loads(content_bytes) self.context.logger.info("Received webhook message content:" + str(content)) if "connection_id" in content: diff --git a/packages/fetchai/skills/aries_faber/skill.yaml b/packages/fetchai/skills/aries_faber/skill.yaml index a0ac4d52ed..c4632c48e6 100644 --- a/packages/fetchai/skills/aries_faber/skill.yaml +++ b/packages/fetchai/skills/aries_faber/skill.yaml @@ -9,9 +9,9 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: README.md: QmdkSNCYx5dNGDAAveapQgoyM7Y7iYeQzR7KN2Sso3CJG4 __init__.py: QmNPVQ6UajvJodqTLWbLvQZkKCfrNn1nYPrQXai3xdj6F7 - behaviours.py: QmQUmnhHmEFjGp9SvkLqcBrmCe2CSFngzqTHNadqJXQMgw + behaviours.py: QmYWrG5vc28dAVwXHt2mGGKrCqKGDw2JX1r4rycoqhBhm2 dialogues.py: Qmeynv4h5ArYBJ2wkQurW7VXdDP1VXNbg5GiADkgMPFqj3 - handlers.py: QmXpCVgMTLyewXPmXMmPHUpnZhQZ35GFAhZtcpujAd3WZ8 + handlers.py: Qma4whXkx6ukPiz9tQPzheoMqSjS3s9SigUbkdPjSdBK8q strategy.py: QmdcUrzKHX2CAe1zXRpoFBzj4vSmqGjuhh8MaRmBSpx8gi fingerprint_ignore_patterns: [] contracts: [] diff --git a/packages/fetchai/skills/http_echo/handlers.py b/packages/fetchai/skills/http_echo/handlers.py index f0dba0c4fc..b522b27d52 100644 --- a/packages/fetchai/skills/http_echo/handlers.py +++ b/packages/fetchai/skills/http_echo/handlers.py @@ -100,7 +100,7 @@ def _handle_request( """ self.context.logger.info( "received http request with method={}, url={} and body={!r}".format( - http_msg.method, http_msg.url, http_msg.bodyy, + http_msg.method, http_msg.url, http_msg.body, ) ) if http_msg.method == "get": @@ -123,7 +123,7 @@ def _handle_get(self, http_msg: HttpMessage, http_dialogue: HttpDialogue) -> Non status_code=200, status_text="Success", headers=http_msg.headers, - bodyy=json.dumps({"tom": {"type": "cat", "age": 10}}).encode("utf-8"), + body=json.dumps({"tom": {"type": "cat", "age": 10}}).encode("utf-8"), ) self.context.logger.info("responding with: {}".format(http_response)) self.context.outbox.put_message(message=http_response) @@ -143,7 +143,7 @@ def _handle_post(self, http_msg: HttpMessage, http_dialogue: HttpDialogue) -> No status_code=200, status_text="Success", headers=http_msg.headers, - bodyy=b"", + body=b"", ) self.context.logger.info("responding with: {}".format(http_response)) self.context.outbox.put_message(message=http_response) diff --git a/packages/fetchai/skills/http_echo/skill.yaml b/packages/fetchai/skills/http_echo/skill.yaml index 92a9f725ec..c393fb8840 100644 --- a/packages/fetchai/skills/http_echo/skill.yaml +++ b/packages/fetchai/skills/http_echo/skill.yaml @@ -10,7 +10,7 @@ fingerprint: README.md: QmYMHPsBX3wTMZZP89aKa7FzDCqGyvvue54ZBN8NZt4mNt __init__.py: QmaKik9dXg6cajBPG9RTDr6BhVdWk8aoR8QDNfPQgiy1kv dialogues.py: QmNWC7bEimPQUL1QbJD4uyZ16szPR6WsrKt3MuHZXKkwAH - handlers.py: QmdTuiao42XEvbp2wuqKP4U4noRqAVdec9rss51pswYCoe + handlers.py: QmdFZGUQxYsYbiFMwc9bsu4Yu9LWnD4cWt95L6haGcUCgH fingerprint_ignore_patterns: [] contracts: [] protocols: diff --git a/packages/hashes.csv b/packages/hashes.csv index 1c9c2a4ca4..347e4615e1 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -20,8 +20,8 @@ fetchai/agents/thermometer_client,Qmdvvk9HreF5V4zoWLoM64A5n5HjzdxwKVLgTVcyxJHdda fetchai/agents/weather_client,QmbF8UfJKiJh8hLXuTPoMfK4bgUe1AquMq7nGcgQAZqYn6 fetchai/agents/weather_station,QmcgbSf97vYTvcV3SrMUf9pt1EnNTNS6EUYbBVnkbVNVKZ fetchai/connections/gym,QmaVjWPpipys1swkQy64GitynFjyTNZMaVRex4k2RiLnyy -fetchai/connections/http_client,QmPL4gBPPkJgX2s3ZpwgvA4LU7zad159nzS3MTTREPLWC3 -fetchai/connections/http_server,Qmdc7MCZVmWk76k2pHB2zBwTJ9iokWpuZ8iqzzreBpVEgn +fetchai/connections/http_client,QmZt67bjU8PRRWjdMPaajoq5PNPL29AioZT9VLQC4M3Gbp +fetchai/connections/http_server,QmeTEVTeDvRVAyzTByLMx3ZysZQ41D173fvh95CeNyX5u6 fetchai/connections/ledger,QmQz561g9MqeTviwbVRUKSY4m1rP5htevi23GKcMYfVwFb fetchai/connections/local,QmVw7RDiP5uBtUKodcvvS3uvojPYQGHKMjavUJ2iE7aNB4 fetchai/connections/oef,QmUnHLMteyQvJKLg1EA5FgwugHz5rjZZFboAL5KB3NgeU1 @@ -32,25 +32,25 @@ fetchai/connections/scaffold,QmNUta43nLexAHaXLgmLQYEjntLXSV6MLNvc6Q2CTx7eBS fetchai/connections/soef,QmcRKha58cJA15nGQYCamvt5rmAQgfFwsQYdWfJF5HvUSc fetchai/connections/stub,QmUEv1bMiFqk3wSR3EnYpNDrufwmHckFdpWKwjtcRjdzjN fetchai/connections/tcp,QmdiYVdNCHFvYWhNMGLhAnXweoB6DsiqdzG7i37FQApPew -fetchai/connections/webhook,QmRXxSvtwzvSdEXjY5UeUuoJBD4qzofMkQCzRxeoQUBmJH +fetchai/connections/webhook,QmW1yo7WFzfrXHp43MP2sPkrnUmpLd3ttNg6gB6okBbD6F fetchai/contracts/erc1155,QmbqeTU1TDRVHfqdX6VNf9sWdoqjRAcC1i25ZaCwZXjntY fetchai/contracts/scaffold,QmTKkXifQKq5sTVdVKeD9UGnDwdJoEAoJDjY6qUPt9Bsv2 -fetchai/protocols/contract_api,QmfHLj6VAmqCXzxZ11Vz7FLE3obni2UCLMnKxyqFA1iJCF -fetchai/protocols/default,QmWYLfSXcMkvwdAzKmdD3rweSRNVwX5UTgQaH8tECGBxv4 -fetchai/protocols/fipa,QmdiRToU57bqkzD23fiz7LmtkyCDaeunzGFRdoSV9ZFZLw -fetchai/protocols/gym,QmfDY4gVBraTejz9EXYQ2H4RN6aKkgFpQD1BVCpRMAs55S -fetchai/protocols/http,QmcjgaDxKk2tXijwdzfgokHVydF8htSmJQ8C7JTYoNfQiN -fetchai/protocols/ledger_api,QmTrEGA1sDotji4GBoW2e4foFXwpFQrFX5g9bC82VSnHBn -fetchai/protocols/ml_trade,QmeCUoGByR2C57mfCNQ9N3HaXZv1NvLxUSQ4osoZmqLHLx -fetchai/protocols/oef_search,QmeU9uYHmv7MEefVsNj2kbyYxhyGphTmPpgBZ2tAydpCmt +fetchai/protocols/contract_api,QmNzmEenq56kpAL6nrJvnx8mvcQLB8FuAb1FeYC4FCNe2z +fetchai/protocols/default,Qmdgj13bbmUuQPzXHaoEdD8WXUcvuh8RKQ9juCuCavTcu2 +fetchai/protocols/fipa,QmXoiFgcJGas6RWRjBc9eVY49bkLmGsg7razvixgqzzh1c +fetchai/protocols/gym,QmUV8MWbzDCyGBLhFWyHRs4hQR34FsYakqLo3B1crHYbgq +fetchai/protocols/http,QmeUQMipkmoq8xowjozjyERqLNYau78i2drZNrpAc8nFab +fetchai/protocols/ledger_api,Qmbk6A272rh82TwuMTk16giS915bTkbxMM3FjHrumMHz9Q +fetchai/protocols/ml_trade,QmUt8VWGKuSH6cUQXczBTYmKbQuA1RvQM7LfCRobZ61u3q +fetchai/protocols/oef_search,QmSCZCbwcLeuSqxxygbnSxrK5mA1gUUCvUbRfCDbg2KYni fetchai/protocols/scaffold,QmaQJxMae5XaHKDc838pcGEKhhYSUyKHGWiMfU6zEcVHsy -fetchai/protocols/signing,QmVCe2ZsT3U9stz23uAFFjctTJjy5XRAVnngJYeNANF9Ww -fetchai/protocols/state_update,Qmdo6GidjoBnZgwYtH9QjdDJeAsjGzxSxxxWtbpHJyx9XG +fetchai/protocols/signing,QmfJynUc1yKxn1z9ttK9SAWjsFHZhZKtdCfJyuQbKZGzkG +fetchai/protocols/state_update,QmWqrP339ceuy4c56KXDqG5xxTmqTyZC3Th9WVD12gMfhL fetchai/protocols/t_protocol,Qmb7pLnen3VmikYN12Fq6mWgRLanSTnxLtYpcP1g2NYz74 fetchai/protocols/t_protocol_no_ct,QmY5WNHZTDsQWqdRcW5TCBtvPd8j6pX7PgCBwEqfMMYufb -fetchai/protocols/tac,QmfAvonoD7oM7LBejz9QPbbhF9CbQXbQVkbaDhDwK5HUSS -fetchai/skills/aries_alice,Qmb1BzZ9s5uRxPiqj5gT47JN36LZqGpe3uPP8zv4EiLNDZ -fetchai/skills/aries_faber,QmWeJTouqVPJocuFJjDijwCdF1vNfvShFLPNdSSQQrxKD8 +fetchai/protocols/tac,QmVdTgN9iYwvd7NzkWubj8iNMoQxaNm8S9VxAYhYmmKWUp +fetchai/skills/aries_alice,QmULodRjgTGygwGhV6EZiLZEBVyHvxFeSjorhU4SNMWRWM +fetchai/skills/aries_faber,QmZ6DeFtFRuqvrFScFEgitTA9WRWEBzdKsiAwmPVShZpdf fetchai/skills/carpark_client,Qmd1rUfLVA9MhJThhUCxeAMdcoRJAQZAmjiLZv58X6EQ2U fetchai/skills/carpark_detection,QmYnJmmKzhghbV4uXphQfCg1S4TEQBLg6dsGzJ4i8fj1yY fetchai/skills/echo,QmP1dwNe8WqnytCwU17bhpVnq8WkDGzryqMsjnbFAZUuu1 @@ -60,7 +60,7 @@ fetchai/skills/error,QmQdJfLrNxHxXMswvntbAqxJWwP5wWgaboWxMiT28pT3Rh fetchai/skills/generic_buyer,QmdUqBJTij8pJxYBRBasvPE56ST9j6houRomxj6TB5pJgn fetchai/skills/generic_seller,Qmaop7p743Wn911M11kgr3ek62MjC56iqihD26iByJ8L4m fetchai/skills/gym,QmVZPhjB6PQbYH5f5XNFqsdf63aEBxpLtW5Zb7kRUc4S9L -fetchai/skills/http_echo,QmSrhSVBjR6EdYZ7d6pSqRexBk7jpqcfHqKs9xRegDLGqS +fetchai/skills/http_echo,QmU4icPbPDu25GDX2vvt9RyxRnBu5i22Z5Lm6jGHJju5e7 fetchai/skills/ml_data_provider,QmSRCvaVQs6MDnpNb7bk2zqks9sVGXvxC3bEkBTxTLhftZ fetchai/skills/ml_train,QmRg6C7JSSZEheCyLkaMXVwgMkAcTtGHAjv6XWVcNVuQJw fetchai/skills/scaffold,QmWXsefztjMfLAsmHGAdLLAvZJb1WxGPpDfx3cS1FWSEFT 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 6477669016..7d05163deb 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 @@ -123,7 +123,7 @@ async def test_connecting_to_aca(self): ), headers="", version="", - bodyy=b"", + body=b"", ) request_http_message.to = "ACA" request_envelope = Envelope( @@ -218,7 +218,7 @@ async def test_end_to_end_aea_aca(self): ), headers="", version="", - bodyy=b"", + body=b"", ) request_http_message.to = "ACA" request_envelope = Envelope( diff --git a/tests/test_packages/test_connections/test_http_client/test_http_client.py b/tests/test_packages/test_connections/test_http_client/test_http_client.py index 200003cfa7..77beb34302 100644 --- a/tests/test_packages/test_connections/test_http_client/test_http_client.py +++ b/tests/test_packages/test_connections/test_http_client/test_http_client.py @@ -139,7 +139,7 @@ async def test_http_send_error(self): url="bad url", headers="", version="", - bodyy=b"", + body=b"", ) request_envelope = Envelope( to=self.connection_address, @@ -183,7 +183,7 @@ async def test_send_envelope_excluded_protocol_fail(self): url="bad url", headers="", version="", - bodyy=b"", + body=b"", ) request_envelope = Envelope( to=self.connection_address, @@ -228,7 +228,7 @@ async def test_channel_cancel_tasks_on_disconnect(self): url="https://not-a-google.com", headers="", version="", - bodyy=b"", + body=b"", ) request_envelope = Envelope( to=self.connection_address, @@ -273,7 +273,7 @@ async def test_http_send_ok(self): url="https://not-a-google.com", headers="", version="", - bodyy=b"", + body=b"", ) request_envelope = Envelope( to=self.connection_address, @@ -305,9 +305,7 @@ async def test_http_send_ok(self): assert envelope is not None and envelope.message is not None message = envelope.message response_dialogue = self.http_dialogs.update(message) - assert message.status_code == response_mock.status, message.bodyy.decode( - "utf-8" - ) + assert message.status_code == response_mock.status, message.body.decode("utf-8") assert sending_dialogue == response_dialogue await self.http_client_connection.disconnect() @@ -322,7 +320,7 @@ async def test_http_dialogue_construct_fail(self): status_code=500, headers="", status_text="", - bodyy=b"", + body=b"", version="", ) incorrect_http_message.to = self.connection_address diff --git a/tests/test_packages/test_connections/test_http_server/test_http_server.py b/tests/test_packages/test_connections/test_http_server/test_http_server.py index 41999715ff..8ba7d228fb 100644 --- a/tests/test_packages/test_connections/test_http_server/test_http_server.py +++ b/tests/test_packages/test_connections/test_http_server/test_http_server.py @@ -164,7 +164,7 @@ async def test_get_200(self): version=incoming_message.version, status_code=200, status_text="Success", - bodyy=b"Response body", + body=b"Response body", ) response_envelope = Envelope( to=envelope.sender, @@ -198,7 +198,7 @@ async def test_header_content_type(self): headers=f"Content-Type: {content_type}", status_code=200, status_text="Success", - bodyy=b"Response body", + body=b"Response body", ) response_envelope = Envelope( to=envelope.sender, @@ -234,7 +234,7 @@ async def test_bad_performative_get_timeout_error(self): url="/pets", version=incoming_message.version, headers=incoming_message.headers, - bodyy=b"Request body", + body=b"Request body", ) incorrect_message.to = incoming_message.sender @@ -276,7 +276,7 @@ async def test_late_message_get_timeout_error(self): headers=incoming_message.headers, status_code=200, status_text="Success", - bodyy=b"Response body", + body=b"Response body", ) response_envelope = Envelope( to=message.to, @@ -315,7 +315,7 @@ async def test_post_201(self): version=incoming_message.version, status_code=201, status_text="Created", - bodyy=b"Response body", + body=b"Response body", ) response_envelope = Envelope( to=message.to, @@ -393,7 +393,7 @@ async def test_send_connection_drop(self): version="", status_code=200, status_text="Success", - bodyy=b"", + body=b"", ) message.to = str(HTTPServerConnection.connection_id) message.sender = "from_key" @@ -439,7 +439,7 @@ async def test_server_error_on_send_response(self): headers=incoming_message.headers, status_code=201, status_text="Created", - bodyy=b"Response body", + body=b"Response body", ) response_envelope = Envelope( to=message.to, @@ -467,7 +467,7 @@ async def test_send_envelope_restricted_to_protocols_fail(self): headers="", status_code=200, status_text="Success", - bodyy=b"Response body", + body=b"Response body", ) envelope = Envelope( to="receiver", diff --git a/tests/test_packages/test_connections/test_http_server/test_http_server_and_client.py b/tests/test_packages/test_connections/test_http_server/test_http_server_and_client.py index 7808591f52..dfdd976b16 100644 --- a/tests/test_packages/test_connections/test_http_server/test_http_server_and_client.py +++ b/tests/test_packages/test_connections/test_http_server/test_http_server_and_client.py @@ -122,7 +122,7 @@ def setup(self): self.setup_client() def _make_request( - self, path: str, method: str = "get", headers: str = "", bodyy: bytes = b"" + self, path: str, method: str = "get", headers: str = "", body: bytes = b"" ) -> Envelope: """Make request envelope.""" request_http_message, _ = self._client_dialogues.create( @@ -132,7 +132,7 @@ def _make_request( url=f"http://{self.host}:{self.port}{path}", headers="", version="", - bodyy=b"", + body=b"", ) request_envelope = Envelope( to=request_http_message.to, @@ -156,7 +156,7 @@ def _make_response( headers=incoming_message.headers, status_code=status_code, status_text=status_text, - bodyy=incoming_message.bodyy, + body=incoming_message.body, ) response_envelope = Envelope( to=message.to, @@ -170,7 +170,7 @@ def _make_response( @pytest.mark.asyncio async def test_post_with_payload(self): """Test client and server with post request.""" - initial_request = self._make_request("/test", "POST", bodyy=b"1234567890") + initial_request = self._make_request("/test", "POST", body=b"1234567890") await self.client.send(initial_request) request = await asyncio.wait_for(self.server.receive(), timeout=5) # this is "inside" the server agent @@ -178,8 +178,8 @@ async def test_post_with_payload(self): await self.server.send(initial_response) response = await asyncio.wait_for(self.client.receive(), timeout=5) assert ( - cast(HttpMessage, initial_request.message).bodyy - == cast(HttpMessage, response.message).bodyy + cast(HttpMessage, initial_request.message).body + == cast(HttpMessage, response.message).body ) assert ( initial_request.message.dialogue_reference[0] 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 4d333614f0..f36d9bbcd8 100644 --- a/tests/test_packages/test_connections/test_webhook/test_webhook.py +++ b/tests/test_packages/test_connections/test_webhook/test_webhook.py @@ -141,7 +141,7 @@ async def test_receive_post_ok(self): dialogue = self.dialogues.update(message) assert dialogue is not None assert message.method.upper() == "POST" - assert message.bodyy.decode("utf-8") == json.dumps(payload) + assert message.body.decode("utf-8") == json.dumps(payload) await call_task @pytest.mark.asyncio @@ -158,7 +158,7 @@ async def test_send(self): method="get", url="/", headers="", - bodyy="", + body="", version="", ) envelope = Envelope( diff --git a/tests/test_packages/test_protocols/test_http.py b/tests/test_packages/test_protocols/test_http.py index 0971584a25..6932c4e05b 100644 --- a/tests/test_packages/test_protocols/test_http.py +++ b/tests/test_packages/test_protocols/test_http.py @@ -53,7 +53,7 @@ def test_request_serialization(): url="url", version="some_version", headers="some_headers", - bodyy=b"some_bodyy", + body=b"some_body", ) msg.to = "receiver" envelope = Envelope( @@ -85,7 +85,7 @@ def test_response_serialization(): status_code=1, status_text="some_status_text", headers="some_headers", - bodyy=b"some_bodyy", + body=b"some_body", ) msg.to = "receiver" envelope = Envelope( @@ -125,7 +125,7 @@ def test_encoding_unknown_performative(): url="url", version="some_version", headers="some_headers", - bodyy=b"some_bodyy", + body=b"some_body", ) with pytest.raises(ValueError, match="Performative not valid:"): @@ -141,7 +141,7 @@ def test_decoding_unknown_performative(): url="url", version="some_version", headers="some_headers", - bodyy=b"some_bodyy", + body=b"some_body", ) encoded_msg = HttpMessage.serializer.encode(msg) @@ -164,7 +164,7 @@ def test_incorrect_message(mocked_enforce): url="url", version="some_version", headers="some_headers", - bodyy=b"some_bodyy", + body=b"some_body", ) mock_logger.assert_any_call("some error") From 9e9b71ebb24ea6d12983b0681db5f2e05580ed8f Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 19:52:59 +0100 Subject: [PATCH 046/155] fix message constructor --- aea/protocols/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aea/protocols/base.py b/aea/protocols/base.py index df954a80ab..54fdc2d8b2 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -54,7 +54,7 @@ def __str__(self): """Get the string representation.""" return str(self.value) - def __init__(self, body: Optional[Dict] = None, **kwargs): + def __init__(self, _body: Optional[Dict] = None, **kwargs): """ Initialize a Message object. @@ -63,7 +63,7 @@ def __init__(self, body: Optional[Dict] = None, **kwargs): """ self._to = None # type: Optional[Address] self._sender = None # type: Optional[Address] - self.__body = copy(body) if body else {} # type: Dict[str, Any] + self.__body = copy(_body) if _body else {} # type: Dict[str, Any] self.__body.update(kwargs) try: self._is_consistent() From 5dd3e203ad8187016778fbfb689f44a12c6f7f48 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 20:12:07 +0100 Subject: [PATCH 047/155] fix integration tests --- aea/test_tools/test_cases.py | 15 +++++++++++++++ tests/test_cli/test_publish.py | 1 - .../test_skills_integration/test_carpark.py | 4 ++++ .../test_skills_integration/test_erc1155.py | 2 ++ .../test_skills_integration/test_generic.py | 4 ++++ .../test_skills_integration/test_gym.py | 1 + .../test_skills_integration/test_http_echo.py | 1 + .../test_skills_integration/test_ml_skills.py | 4 ++++ .../test_skills_integration/test_tac.py | 4 ++++ .../test_skills_integration/test_thermometer.py | 4 ++++ .../test_skills_integration/test_weather.py | 4 ++++ 11 files changed, 43 insertions(+), 1 deletion(-) diff --git a/aea/test_tools/test_cases.py b/aea/test_tools/test_cases.py index 8d4a6a0a3e..6e3fd2202c 100644 --- a/aea/test_tools/test_cases.py +++ b/aea/test_tools/test_cases.py @@ -449,6 +449,21 @@ def add_item(cls, item_type: str, public_id: str, local: bool = True) -> Result: cli_args.remove("--local") return cls.run_cli_command(*cli_args, cwd=cls._get_cwd()) + @classmethod + def remove_item(cls, item_type: str, public_id: str) -> Result: + """ + Remove an item from the agent. + + Run from agent's directory. + + :param item_type: str item type. + :param public_id: public id of the item. + + :return: Result + """ + cli_args = ["remove", item_type, public_id] + return cls.run_cli_command(*cli_args, cwd=cls._get_cwd()) + @classmethod def scaffold_item(cls, item_type: str, name: str) -> Result: """ diff --git a/tests/test_cli/test_publish.py b/tests/test_cli/test_publish.py index ab5b97d799..9f67acc2ea 100644 --- a/tests/test_cli/test_publish.py +++ b/tests/test_cli/test_publish.py @@ -44,7 +44,6 @@ @mock.patch("aea.cli.publish.os.path.exists", return_value=False) @mock.patch("aea.cli.publish.try_get_item_target_path", return_value="target-dir") @mock.patch("aea.cli.publish.os.path.join", return_value="joined-path") -@mock.patch("aea.cli.publish.DEFAULT_CONNECTION", "author/default_connection:version") class SaveAgentLocallyTestCase(TestCase): """Test case for _save_agent_locally method.""" diff --git a/tests/test_packages/test_skills_integration/test_carpark.py b/tests/test_packages/test_skills_integration/test_carpark.py index aa4fae4699..c9b5902a80 100644 --- a/tests/test_packages/test_skills_integration/test_carpark.py +++ b/tests/test_packages/test_skills_integration/test_carpark.py @@ -67,6 +67,7 @@ def test_carpark(self): self.set_agent_context(carpark_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/carpark_detection:0.13.0") @@ -102,6 +103,7 @@ def test_carpark(self): self.set_agent_context(carpark_client_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/carpark_client:0.13.0") @@ -240,6 +242,7 @@ def test_carpark(self): self.set_agent_context(carpark_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/carpark_detection:0.13.0") @@ -278,6 +281,7 @@ def test_carpark(self): self.set_agent_context(carpark_client_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/carpark_client:0.13.0") diff --git a/tests/test_packages/test_skills_integration/test_erc1155.py b/tests/test_packages/test_skills_integration/test_erc1155.py index 6352f1e7f8..0a81bbb870 100644 --- a/tests/test_packages/test_skills_integration/test_erc1155.py +++ b/tests/test_packages/test_skills_integration/test_erc1155.py @@ -74,6 +74,7 @@ def test_generic(self): self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.set_config("agent.default_ledger", ETHEREUM) setting_path = "agent.default_routing" @@ -118,6 +119,7 @@ def test_generic(self): self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.set_config("agent.default_ledger", ETHEREUM) setting_path = "agent.default_routing" diff --git a/tests/test_packages/test_skills_integration/test_generic.py b/tests/test_packages/test_skills_integration/test_generic.py index 98e4f48e95..7896848103 100644 --- a/tests/test_packages/test_skills_integration/test_generic.py +++ b/tests/test_packages/test_skills_integration/test_generic.py @@ -66,6 +66,7 @@ def test_generic(self, pytestconfig): self.set_agent_context(seller_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/generic_seller:0.14.0") @@ -105,6 +106,7 @@ def test_generic(self, pytestconfig): self.set_agent_context(buyer_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/generic_buyer:0.13.0") @@ -245,6 +247,7 @@ def test_generic(self, pytestconfig): self.set_agent_context(seller_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/generic_seller:0.14.0") @@ -287,6 +290,7 @@ def test_generic(self, pytestconfig): self.set_agent_context(buyer_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/generic_buyer:0.13.0") diff --git a/tests/test_packages/test_skills_integration/test_gym.py b/tests/test_packages/test_skills_integration/test_gym.py index 9df55f43b6..df22770315 100644 --- a/tests/test_packages/test_skills_integration/test_gym.py +++ b/tests/test_packages/test_skills_integration/test_gym.py @@ -34,6 +34,7 @@ def test_gym(self): """Run the gym skill sequence.""" self.add_item("skill", "fetchai/gym:0.9.0") self.add_item("connection", "fetchai/gym:0.9.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.run_install() # change default connection diff --git a/tests/test_packages/test_skills_integration/test_http_echo.py b/tests/test_packages/test_skills_integration/test_http_echo.py index 39331bb97b..8c4656800d 100644 --- a/tests/test_packages/test_skills_integration/test_http_echo.py +++ b/tests/test_packages/test_skills_integration/test_http_echo.py @@ -38,6 +38,7 @@ def test_echo(self): """Run the echo skill sequence.""" self.add_item("connection", "fetchai/http_server:0.10.0") self.add_item("skill", "fetchai/http_echo:0.8.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/http_server:0.10.0") self.set_config( "vendor.fetchai.connections.http_server.config.api_spec_path", API_SPEC_PATH 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 985039db8c..119a2ad6ad 100644 --- a/tests/test_packages/test_skills_integration/test_ml_skills.py +++ b/tests/test_packages/test_skills_integration/test_ml_skills.py @@ -80,6 +80,7 @@ def test_ml_skills(self, pytestconfig): self.set_agent_context(data_provider_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/ml_data_provider:0.13.0") @@ -115,6 +116,7 @@ def test_ml_skills(self, pytestconfig): self.set_agent_context(model_trainer_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/ml_train:0.13.0") @@ -255,6 +257,7 @@ def test_ml_skills(self, pytestconfig): self.set_agent_context(data_provider_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/ml_data_provider:0.13.0") @@ -293,6 +296,7 @@ def test_ml_skills(self, pytestconfig): self.set_agent_context(model_trainer_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/ml_train:0.13.0") diff --git a/tests/test_packages/test_skills_integration/test_tac.py b/tests/test_packages/test_skills_integration/test_tac.py index a12df35e95..e0fded6724 100644 --- a/tests/test_packages/test_skills_integration/test_tac.py +++ b/tests/test_packages/test_skills_integration/test_tac.py @@ -74,6 +74,7 @@ def test_tac(self): self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.add_item("skill", "fetchai/tac_control:0.9.0") self.set_config("agent.default_ledger", FETCHAI) setting_path = "agent.default_routing" @@ -115,6 +116,7 @@ def test_tac(self): self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") self.add_item("connection", "fetchai/ledger:0.7.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.add_item("skill", "fetchai/tac_participation:0.10.0") self.add_item("skill", "fetchai/tac_negotiation:0.11.0") self.set_config("agent.default_ledger", FETCHAI) @@ -292,6 +294,7 @@ def test_tac(self): self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") self.add_item("connection", "fetchai/ledger:0.7.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.add_item("skill", "fetchai/tac_control_contract:0.10.0") self.set_config("agent.default_ledger", ETHEREUM) setting_path = "agent.default_routing" @@ -340,6 +343,7 @@ def test_tac(self): self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") self.add_item("connection", "fetchai/ledger:0.7.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.add_item("skill", "fetchai/tac_participation:0.10.0") self.add_item("skill", "fetchai/tac_negotiation:0.11.0") self.set_config("agent.default_ledger", ETHEREUM) diff --git a/tests/test_packages/test_skills_integration/test_thermometer.py b/tests/test_packages/test_skills_integration/test_thermometer.py index 31c0ee65c2..ce2879caa7 100644 --- a/tests/test_packages/test_skills_integration/test_thermometer.py +++ b/tests/test_packages/test_skills_integration/test_thermometer.py @@ -67,6 +67,7 @@ def test_thermometer(self): self.set_agent_context(thermometer_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/thermometer:0.13.0") @@ -99,6 +100,7 @@ def test_thermometer(self): self.set_agent_context(thermometer_client_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/thermometer_client:0.12.0") @@ -241,6 +243,7 @@ def test_thermometer(self): self.set_agent_context(thermometer_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/thermometer:0.13.0") @@ -276,6 +279,7 @@ def test_thermometer(self): self.set_agent_context(thermometer_client_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/thermometer_client:0.12.0") diff --git a/tests/test_packages/test_skills_integration/test_weather.py b/tests/test_packages/test_skills_integration/test_weather.py index b376c6a965..d47a7db754 100644 --- a/tests/test_packages/test_skills_integration/test_weather.py +++ b/tests/test_packages/test_skills_integration/test_weather.py @@ -66,6 +66,7 @@ def test_weather(self): self.set_agent_context(weather_station_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/weather_station:0.13.0") @@ -101,6 +102,7 @@ def test_weather(self): self.set_agent_context(weather_client_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/weather_client:0.12.0") @@ -236,6 +238,7 @@ def test_weather(self): self.set_agent_context(weather_station_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/weather_station:0.13.0") @@ -273,6 +276,7 @@ def test_weather(self): self.set_agent_context(weather_client_aea_name) self.add_item("connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/soef:0.10.0") + self.remove_item("connection", "fetchai/stub:0.11.0") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.11.0") self.add_item("connection", "fetchai/ledger:0.7.0") self.add_item("skill", "fetchai/weather_client:0.12.0") From b41a734ceb469a9ccd92dc87f99446971c2043b8 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 20:23:53 +0100 Subject: [PATCH 048/155] allow connections to depend on each other --- aea/configurations/base.py | 5 ++++ .../schemas/connection-config_schema.json | 11 +++++++- aea/connections/scaffold/connection.yaml | 1 + aea/connections/stub/connection.yaml | 1 + .../fetchai/connections/gym/connection.yaml | 1 + .../connections/http_client/connection.yaml | 1 + .../connections/http_server/connection.yaml | 1 + .../connections/ledger/connection.yaml | 1 + .../fetchai/connections/local/connection.yaml | 1 + .../fetchai/connections/oef/connection.yaml | 1 + .../connections/p2p_libp2p/connection.yaml | 1 + .../p2p_libp2p_client/connection.yaml | 1 + .../connections/p2p_stub/connection.yaml | 1 + .../fetchai/connections/soef/connection.yaml | 1 + .../fetchai/connections/tcp/connection.yaml | 1 + .../connections/webhook/connection.yaml | 1 + packages/hashes.csv | 28 +++++++++---------- tests/data/dummy_connection/connection.yaml | 1 + tests/data/hashes.csv | 2 +- 19 files changed, 45 insertions(+), 16 deletions(-) diff --git a/aea/configurations/base.py b/aea/configurations/base.py index 5405cec0d4..5838c4f56e 100644 --- a/aea/configurations/base.py +++ b/aea/configurations/base.py @@ -1158,6 +1158,7 @@ def __init__( fingerprint_ignore_patterns: Optional[Sequence[str]] = None, class_name: str = "", protocols: Optional[Set[PublicId]] = None, + connections: Optional[Set[PublicId]] = None, restricted_to_protocols: Optional[Set[PublicId]] = None, excluded_protocols: Optional[Set[PublicId]] = None, dependencies: Optional[Dependencies] = None, @@ -1199,6 +1200,7 @@ def __init__( ) self.class_name = class_name self.protocols = protocols if protocols is not None else [] + self.connections = connections if connections is not None else [] self.restricted_to_protocols = ( restricted_to_protocols if restricted_to_protocols is not None else set() ) @@ -1238,6 +1240,7 @@ def json(self) -> Dict: "fingerprint": self.fingerprint, "fingerprint_ignore_patterns": self.fingerprint_ignore_patterns, "protocols": sorted(map(str, self.protocols)), + "connections": sorted(map(str, self.connections)), "class_name": self.class_name, "config": self.config, "excluded_protocols": sorted(map(str, self.excluded_protocols)), @@ -1260,6 +1263,7 @@ def from_json(cls, obj: Dict): excluded_protocols = {PublicId.from_str(id_) for id_ in excluded_protocols} dependencies = dependencies_from_json(obj.get("dependencies", {})) protocols = {PublicId.from_str(id_) for id_ in obj.get("protocols", set())} + connections = {PublicId.from_str(id_) for id_ in obj.get("connections", set())} return ConnectionConfig( name=cast(str, obj.get("name")), author=cast(str, obj.get("author")), @@ -1272,6 +1276,7 @@ def from_json(cls, obj: Dict): ), class_name=cast(str, obj.get("class_name")), protocols=cast(Set[PublicId], protocols), + connections=cast(Set[PublicId], connections), restricted_to_protocols=cast(Set[PublicId], restricted_to_protocols), excluded_protocols=cast(Set[PublicId], excluded_protocols), dependencies=cast(Dependencies, dependencies), diff --git a/aea/configurations/schemas/connection-config_schema.json b/aea/configurations/schemas/connection-config_schema.json index 3c00b7335d..b77affe426 100644 --- a/aea/configurations/schemas/connection-config_schema.json +++ b/aea/configurations/schemas/connection-config_schema.json @@ -12,7 +12,8 @@ "aea_version", "class_name", "config", - "protocols" + "protocols", + "connections" ], "properties": { "name": { @@ -50,6 +51,14 @@ "$ref": "definitions.json#/definitions/public_id" } }, + "connections": { + "type": "array", + "additionalProperties": false, + "uniqueItems": true, + "items": { + "$ref": "definitions.json#/definitions/public_id" + } + }, "restricted_to_protocols": { "type": "array", "uniqueItems": true, diff --git a/aea/connections/scaffold/connection.yaml b/aea/connections/scaffold/connection.yaml index 44837f38d2..d2a509b7bf 100644 --- a/aea/connections/scaffold/connection.yaml +++ b/aea/connections/scaffold/connection.yaml @@ -11,6 +11,7 @@ fingerprint: connection.py: QmT7MNg8gkmWMzthN3k77i6UVhwXBeC2bGiNrUmXQcjWit readme.md: Qmdt71SaCCwAG1c24VktXDm4pxgUBiPMg4bWfUTiqorypf fingerprint_ignore_patterns: [] +connections: [] protocols: [] class_name: MyScaffoldConnection config: diff --git a/aea/connections/stub/connection.yaml b/aea/connections/stub/connection.yaml index 4a7136a01a..bdb9fef1a2 100644 --- a/aea/connections/stub/connection.yaml +++ b/aea/connections/stub/connection.yaml @@ -11,6 +11,7 @@ fingerprint: connection.py: QmRRre8r1yAj2w7EPp7hMc53zkc74PUfSMf4Cuwpzds4Q2 readme.md: QmTac8uG5sT9igmMhfUbWMpyNUG5Dsj3JJZBBdfT1wTfvA fingerprint_ignore_patterns: [] +connections: [] protocols: [] class_name: StubConnection config: diff --git a/packages/fetchai/connections/gym/connection.yaml b/packages/fetchai/connections/gym/connection.yaml index 05548168dc..c1b9e5e6da 100644 --- a/packages/fetchai/connections/gym/connection.yaml +++ b/packages/fetchai/connections/gym/connection.yaml @@ -10,6 +10,7 @@ fingerprint: __init__.py: QmWwxj1hGGZNteCvRtZxwtY9PuEKsrWsEmMWCKwiYCdvRR connection.py: Qmce7CQCmjXeYsQSERezU2JyBKECVce9yWgB9dKBLYyj3U fingerprint_ignore_patterns: [] +connections: [] protocols: - fetchai/gym:0.7.0 class_name: GymConnection diff --git a/packages/fetchai/connections/http_client/connection.yaml b/packages/fetchai/connections/http_client/connection.yaml index e3f4ca69a5..a15b59adb9 100644 --- a/packages/fetchai/connections/http_client/connection.yaml +++ b/packages/fetchai/connections/http_client/connection.yaml @@ -11,6 +11,7 @@ fingerprint: __init__.py: QmPdKAks8A6XKAgZiopJzPZYXJumTeUqChd8UorqmLQQPU connection.py: QmRYrhEHdfjcct7KEzDZvbh2GAAhApFCYBf8uaS1HCkFvG fingerprint_ignore_patterns: [] +connections: [] protocols: - fetchai/http:0.7.0 class_name: HTTPClientConnection diff --git a/packages/fetchai/connections/http_server/connection.yaml b/packages/fetchai/connections/http_server/connection.yaml index 261413dac4..1391ceed32 100644 --- a/packages/fetchai/connections/http_server/connection.yaml +++ b/packages/fetchai/connections/http_server/connection.yaml @@ -11,6 +11,7 @@ fingerprint: __init__.py: Qmb6JEAkJeb5JweqrSGiGoQp1vGXqddjGgb9WMkm2phTgA connection.py: QmfGG7pydLZLTGWoKvRmP4ERyfjawdYgb54jV1DQdRPNNP fingerprint_ignore_patterns: [] +connections: [] protocols: - fetchai/http:0.7.0 class_name: HTTPServerConnection diff --git a/packages/fetchai/connections/ledger/connection.yaml b/packages/fetchai/connections/ledger/connection.yaml index f34f3c537b..daeab0e4f0 100644 --- a/packages/fetchai/connections/ledger/connection.yaml +++ b/packages/fetchai/connections/ledger/connection.yaml @@ -13,6 +13,7 @@ fingerprint: contract_dispatcher.py: QmbwomSmrddSY4wREL7ywHF2p9qQ3daCiv9VoYf9cbBR61 ledger_dispatcher.py: QmfFNHQQdGiE33Cef5vRHMnXJmLVr6mQGR3iENx5ShDnQk fingerprint_ignore_patterns: [] +connections: [] protocols: - fetchai/contract_api:0.6.0 - fetchai/ledger_api:0.5.0 diff --git a/packages/fetchai/connections/local/connection.yaml b/packages/fetchai/connections/local/connection.yaml index 6eecf5fe3b..f610b5058d 100644 --- a/packages/fetchai/connections/local/connection.yaml +++ b/packages/fetchai/connections/local/connection.yaml @@ -10,6 +10,7 @@ fingerprint: __init__.py: QmeeoX5E38Ecrb1rLdeFyyxReHLrcJoETnBcPbcNWVbiKG connection.py: QmbhmhzTKpHAd6Ea5yiueuboihMwdJ2xH1b1yYUj97Cfxd fingerprint_ignore_patterns: [] +connections: [] protocols: - fetchai/oef_search:0.8.0 class_name: OEFLocalConnection diff --git a/packages/fetchai/connections/oef/connection.yaml b/packages/fetchai/connections/oef/connection.yaml index 14c4347016..6e53462865 100644 --- a/packages/fetchai/connections/oef/connection.yaml +++ b/packages/fetchai/connections/oef/connection.yaml @@ -12,6 +12,7 @@ fingerprint: connection.py: QmTLTfWnd4WpJprX9JUu5KWztJ4nqfA847r3AsDR7w2ZEi object_translator.py: QmZNGxNywRZJTfcd2GYzbxkrXqUFRFEs8wnL3NeBW78poe fingerprint_ignore_patterns: [] +connections: [] protocols: - fetchai/default:0.7.0 - fetchai/oef_search:0.8.0 diff --git a/packages/fetchai/connections/p2p_libp2p/connection.yaml b/packages/fetchai/connections/p2p_libp2p/connection.yaml index c9fd19f695..5ab1a144b8 100644 --- a/packages/fetchai/connections/p2p_libp2p/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p/connection.yaml @@ -30,6 +30,7 @@ fingerprint: libp2p_node.go: QmYczbp9C62ykF4pUG2onF8nkYvfKsEsqwWxcLWcWwcP9u utils/utils.go: QmSdLqVNwtupDKxvE2qbCEEoACCaRG2ccNPq6p34YtrDqA fingerprint_ignore_patterns: [] +connections: [] protocols: [] class_name: P2PLibp2pConnection config: diff --git a/packages/fetchai/connections/p2p_libp2p_client/connection.yaml b/packages/fetchai/connections/p2p_libp2p_client/connection.yaml index f8eaf413f5..91d2cdc0d2 100644 --- a/packages/fetchai/connections/p2p_libp2p_client/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p_client/connection.yaml @@ -12,6 +12,7 @@ fingerprint: __init__.py: QmT1FEHkPGMHV5oiVEfQHHr25N2qdZxydSNRJabJvYiTgf connection.py: QmNdyKcUpZW8LnqEcYLbQepFegLQGSM5KAHwV9WyWqtXvp fingerprint_ignore_patterns: [] +connections: [] protocols: [] class_name: P2PLibp2pClientConnection config: diff --git a/packages/fetchai/connections/p2p_stub/connection.yaml b/packages/fetchai/connections/p2p_stub/connection.yaml index db3036d030..e750264165 100644 --- a/packages/fetchai/connections/p2p_stub/connection.yaml +++ b/packages/fetchai/connections/p2p_stub/connection.yaml @@ -11,6 +11,7 @@ fingerprint: __init__.py: QmW9XFKGsea4u3fupkFMcQutgsjqusCMBMyTcTmLLmQ4tR connection.py: QmaGhDBVKjeYm8fmHYYgFXD8mpZNVXDv4bmPtrnPcMtLP4 fingerprint_ignore_patterns: [] +connections: [] protocols: [] class_name: P2PStubConnection config: diff --git a/packages/fetchai/connections/soef/connection.yaml b/packages/fetchai/connections/soef/connection.yaml index bf5a577649..094eea162f 100644 --- a/packages/fetchai/connections/soef/connection.yaml +++ b/packages/fetchai/connections/soef/connection.yaml @@ -10,6 +10,7 @@ fingerprint: __init__.py: Qmd5VBGFJHXFe1H45XoUh5mMSYBwvLSViJuGFeMgbPdQts connection.py: QmcMhHBfiGWRubtM68mvBMnHbnfXWRsuKSmEW4N5M6FNUa fingerprint_ignore_patterns: [] +connections: [] protocols: - fetchai/oef_search:0.8.0 class_name: SOEFConnection diff --git a/packages/fetchai/connections/tcp/connection.yaml b/packages/fetchai/connections/tcp/connection.yaml index 844700b547..0d0fbd974f 100644 --- a/packages/fetchai/connections/tcp/connection.yaml +++ b/packages/fetchai/connections/tcp/connection.yaml @@ -13,6 +13,7 @@ fingerprint: tcp_client.py: QmWGuFbVA5syCvoFpL2rpYePVDAkmEi7Lt5DT6D1pz2p1f tcp_server.py: QmSSszevVoh4LZJoeWBpM25ebbYt4okP2uor1aXYFxcc3g fingerprint_ignore_patterns: [] +connections: [] protocols: [] class_name: TCPClientConnection config: diff --git a/packages/fetchai/connections/webhook/connection.yaml b/packages/fetchai/connections/webhook/connection.yaml index dc3122249c..2a0445c2b0 100644 --- a/packages/fetchai/connections/webhook/connection.yaml +++ b/packages/fetchai/connections/webhook/connection.yaml @@ -10,6 +10,7 @@ fingerprint: __init__.py: QmWUKSmXaBgGMvKgdmzKmMjCx43BnrfW6og2n3afNoAALq connection.py: QmWgBibWAQz45vzzAxCyL8g5F9WA8o19DCWcXUkcfYzdcw fingerprint_ignore_patterns: [] +connections: [] protocols: - fetchai/http:0.7.0 class_name: WebhookConnection diff --git a/packages/hashes.csv b/packages/hashes.csv index a7d7a16da5..0705aa29d4 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -19,20 +19,20 @@ fetchai/agents/thermometer_aea,QmNN7XcjNp67QUEfaSypZsbainmBshAZSqD7itx28ef8g3 fetchai/agents/thermometer_client,Qmdvvk9HreF5V4zoWLoM64A5n5HjzdxwKVLgTVcyxJHdda fetchai/agents/weather_client,QmbF8UfJKiJh8hLXuTPoMfK4bgUe1AquMq7nGcgQAZqYn6 fetchai/agents/weather_station,QmcgbSf97vYTvcV3SrMUf9pt1EnNTNS6EUYbBVnkbVNVKZ -fetchai/connections/gym,QmbTsxKbWWQKLm2RyGAZVxgxXvTLrjatfahi4YWRqwwuDY -fetchai/connections/http_client,QmNomLcsHxKpDuFYXTSoitvrsryVUjRHVEXbjcg8WYf6Y6 -fetchai/connections/http_server,QmRc5V4itvLy7MhoFhNm1AoCukRHvwepGKFYkeUQhVVNaV -fetchai/connections/ledger,Qmbx8nc2nTm8ixvSTVyJH9DATuxLBy7Vr8GYRDqSUH2sEP -fetchai/connections/local,QmYV9sToTqD8cVoxbaBf2YTtYUHSBbziSGe3Q8z7ZRaACe -fetchai/connections/oef,QmdBfbCfYumf89515bPPsRVCm9q8gHwtcseWZGnFpifX9A -fetchai/connections/p2p_libp2p,QmXPoYUKkRRTppE9bRULeMwEVXXMnD5bYdeEEy6zQSzEWA -fetchai/connections/p2p_libp2p_client,QmaTYe8aLfTRA3k9SNkjjehSGoWPASspCCscGxkUnoyGmm -fetchai/connections/p2p_stub,QmR775dXUKhv7JHroVYcapifxgcMnaaJ9k6C4gEgLNp735 -fetchai/connections/scaffold,QmYipigBgyD2MiA8k3xbfXp9SJsymoFpTgj6LjS6XTKKwN -fetchai/connections/soef,QmXHbf9y4aEpLb3mJUHNM7CWRV5CQkmgbJxcjhbNWnmUqS -fetchai/connections/stub,QmSbhSPAjwhvD7mJENUne4FasDwsfrsjgjn3EJeGuW3qLi -fetchai/connections/tcp,QmSrDaj9j6J2sJmdFcnXyi3P9yQCZfHM9bpZeJ9wsLiNvK -fetchai/connections/webhook,Qmd87FcHt3DBs52cXpysQjrG2GGd73UiqBs249qhREDPyd +fetchai/connections/gym,QmXKJbYwQNusED89cvHMZ6d5vEKR2yRPsN17ykc4tHHTNr +fetchai/connections/http_client,QmRK4NR8omwmsxMBQyq3kF7saMjqbaDNrbu2tvVq4B7Eq7 +fetchai/connections/http_server,QmPM4grAmDPvdECJHDH6dGrt8QDw3Xk6i317Ub7mCjGVJ1 +fetchai/connections/ledger,QmWLZj9uthDwun9WnkpEQ2i2SukCfHeLLhHdoZJ6DuZ52z +fetchai/connections/local,QmcYTbs3mcfa271Uh4ShWciVRHLyahg9Y9PLU9wTYKVSqK +fetchai/connections/oef,Qme8cEBS712GKeR6DUp1Jh9wYXhk5pUVRkrVs3VyFcdCnJ +fetchai/connections/p2p_libp2p,QmZZT7e99db9ThH9HLHHxtEvMPySTyrbJ3GTCBDwJFFB6L +fetchai/connections/p2p_libp2p_client,QmdaUH8yX1cLajsxu3p4J6YN7eaiTivfu5gHaAK13YnF2m +fetchai/connections/p2p_stub,QmPiLdtBHxxNWCeXfor1kvpxZcNiR9cbzRBQCR4CyzpNY3 +fetchai/connections/scaffold,Qme7K4MoENkpBaaW7oT13H1tdi9LXrcZxn8pGU9rFTNx5o +fetchai/connections/soef,QmdeA4zHQbDQx35wpKPRuM4CANugGsPPbeyEGxyAqdf814 +fetchai/connections/stub,QmQoNzjhQryS6QydFh7USkzQTNKiV4CvKmJuEBtgsHYYcL +fetchai/connections/tcp,QmaBu9w5Qvu5wpx33DGJwJ8kvq4wrGHe9EjUqpiYETAr2L +fetchai/connections/webhook,QmWU3ftYqBBn8XtTjUTkhJp7VqWHwTNHVwam7Gyf9b58Pv fetchai/contracts/erc1155,QmbqeTU1TDRVHfqdX6VNf9sWdoqjRAcC1i25ZaCwZXjntY fetchai/contracts/scaffold,QmTKkXifQKq5sTVdVKeD9UGnDwdJoEAoJDjY6qUPt9Bsv2 fetchai/protocols/contract_api,QmfHLj6VAmqCXzxZ11Vz7FLE3obni2UCLMnKxyqFA1iJCF diff --git a/tests/data/dummy_connection/connection.yaml b/tests/data/dummy_connection/connection.yaml index 8937703fa1..8aa093377b 100644 --- a/tests/data/dummy_connection/connection.yaml +++ b/tests/data/dummy_connection/connection.yaml @@ -9,6 +9,7 @@ fingerprint: __init__.py: QmbjcWHRhRiYMqZbgeGkEGVYi8hQ1HnYM8pBYugGKx9YnK connection.py: QmYn4mpVJTjKUUU9sCDGQHsTzYPeK4mTjwEHepHQddMMjs fingerprint_ignore_patterns: [] +connections: [] protocols: [] class_name: DummyConnection config: {} diff --git a/tests/data/hashes.csv b/tests/data/hashes.csv index 63a35999b3..3aa31c30a4 100644 --- a/tests/data/hashes.csv +++ b/tests/data/hashes.csv @@ -1,6 +1,6 @@ dummy_author/agents/dummy_aea,QmdvumQvcNv2yzfZ6MagWJYtUFLoE9q9rAmQwoCGYbtH3w dummy_author/skills/dummy_skill,QmbNGnFv7RuFbZ3Gy5VyRiEiN8bKCPSkzNzRhogXQwUpFd -fetchai/connections/dummy_connection,QmeBeNTd7HezaHnAGtHPMJugJvtFtEr5Bm8sBR3EHxmY4P +fetchai/connections/dummy_connection,QmQn7zWhmqoo3Raf4YaKkyWYrohtw89Y1bNGaMiuoardES fetchai/contracts/dummy_contract,QmPMs9VDGZGF8xJ8XBYLVb1xK5XAgiaJr5Gwcq7Vr3TUyu fetchai/skills/dependencies_skill,QmRKwjiPFptKnSB772aD9a5xCDgd956rEJEYo48pNk8ZmZ fetchai/skills/exception_skill,QmQidMBMHE3pyTXuFpPvLBe6y3vQF3bmquGr3yymnaG3mr From 64f729b2a2e2770af23fc197549208da617fc0a7 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 20:55:49 +0100 Subject: [PATCH 049/155] add topoligical sorting of connections on import --- aea/aea_builder.py | 62 +++++++++++++++++++++++++------------- aea/configurations/base.py | 30 +++++++----------- 2 files changed, 52 insertions(+), 40 deletions(-) diff --git a/aea/aea_builder.py b/aea/aea_builder.py index 40ab4c20fe..6060aa14d3 100644 --- a/aea/aea_builder.py +++ b/aea/aea_builder.py @@ -1213,10 +1213,6 @@ def set_from_configuration( ComponentId(ComponentType.CONTRACT, p_id) for p_id in agent_configuration.contracts ], - [ - ComponentId(ComponentType.CONNECTION, p_id) - for p_id in agent_configuration.connections - ], ) for component_id in component_ids: component_path = self._find_component_directory_from_component_id( @@ -1228,6 +1224,25 @@ def set_from_configuration( skip_consistency_check=skip_consistency_check, ) + connection_ids = [ + ComponentId(ComponentType.CONNECTION, p_id) + for p_id in agent_configuration.connections + ] + if len(connection_ids) != 0: + connection_import_order = self._find_import_order( + connection_ids, aea_project_path, skip_consistency_check + ) + + for connection_id in connection_import_order: + component_path = self._find_component_directory_from_component_id( + aea_project_path, connection_id + ) + self.add_component( + connection_id.component_type, + component_path, + skip_consistency_check=skip_consistency_check, + ) + skill_ids = [ ComponentId(ComponentType.SKILL, p_id) for p_id in agent_configuration.skills @@ -1254,45 +1269,50 @@ def set_from_configuration( def _find_import_order( self, - skill_ids: List[ComponentId], + component_ids: List[ComponentId], aea_project_path: Path, skip_consistency_check: bool, ) -> List[ComponentId]: - """Find import order for skills. + """Find import order for skills/connections. - We need to handle skills separately, since skills can depend on each other. + We need to handle skills and connections separately, since skills/connections can depend on each other. That is, we need to: - - load the skill configurations to find the import order + - load the skill/connection configurations to find the import order - detect if there are cycles - - import skills from the leaves of the dependency graph, by finding a topological ordering. + - import skills/connections from the leaves of the dependency graph, by finding a topological ordering. """ # the adjacency list for the inverse dependency graph dependency_to_supported_dependencies: Dict[ ComponentId, Set[ComponentId] ] = defaultdict(set) - for skill_id in skill_ids: + for component_id in component_ids: component_path = self._find_component_directory_from_component_id( - aea_project_path, skill_id + aea_project_path, component_id ) - configuration = cast( - SkillConfig, - load_component_configuration( - skill_id.component_type, component_path, skip_consistency_check - ), + configuration = load_component_configuration( + component_id.component_type, component_path, skip_consistency_check ) - if skill_id not in dependency_to_supported_dependencies: - dependency_to_supported_dependencies[skill_id] = set() - for dependency in configuration.skills: + if component_id not in dependency_to_supported_dependencies: + dependency_to_supported_dependencies[component_id] = set() + if isinstance(configuration, SkillConfig): + dependencies, component_type = configuration.skills, "skills" + elif isinstance(configuration, ConnectionConfig): + dependencies, component_type = configuration.connections, "connections" + else: + raise AEAException("Not a valid configuration type.") + for dependency in dependencies: dependency_to_supported_dependencies[ ComponentId(ComponentType.SKILL, dependency) - ].add(skill_id) + ].add(component_id) try: order = find_topological_order(dependency_to_supported_dependencies) except ValueError: - raise AEAException("Cannot load skills, there is a cyclic dependency.") + raise AEAException( + f"Cannot load {component_type}, there is a cyclic dependency." + ) return order diff --git a/aea/configurations/base.py b/aea/configurations/base.py index 5838c4f56e..b3a8524f04 100644 --- a/aea/configurations/base.py +++ b/aea/configurations/base.py @@ -1199,8 +1199,8 @@ def __init__( dependencies, ) self.class_name = class_name - self.protocols = protocols if protocols is not None else [] - self.connections = connections if connections is not None else [] + self.protocols = protocols if protocols is not None else set() + self.connections = connections if connections is not None else set() self.restricted_to_protocols = ( restricted_to_protocols if restricted_to_protocols is not None else set() ) @@ -1419,9 +1419,9 @@ def __init__( aea_version: str = "", fingerprint: Optional[Dict[str, str]] = None, fingerprint_ignore_patterns: Optional[Sequence[str]] = None, - protocols: List[PublicId] = None, - contracts: List[PublicId] = None, - skills: List[PublicId] = None, + protocols: Optional[Set[PublicId]] = None, + contracts: Optional[Set[PublicId]] = None, + skills: Optional[Set[PublicId]] = None, dependencies: Optional[Dependencies] = None, description: str = "", is_abstract: bool = False, @@ -1437,9 +1437,9 @@ def __init__( fingerprint_ignore_patterns, dependencies, ) - self.protocols: List[PublicId] = (protocols if protocols is not None else []) - self.contracts: List[PublicId] = (contracts if contracts is not None else []) - self.skills: List[PublicId] = (skills if skills is not None else []) + self.protocols = protocols if protocols is not None else set() + self.contracts = contracts if contracts is not None else set() + self.skills = skills if skills is not None else set() self.dependencies = dependencies if dependencies is not None else {} self.description = description self.handlers: CRUDCollection[SkillComponentConfiguration] = CRUDCollection() @@ -1510,17 +1510,9 @@ def from_json(cls, obj: Dict): fingerprint_ignore_patterns = cast( Sequence[str], obj.get("fingerprint_ignore_patterns") ) - protocols = cast( - List[PublicId], - [PublicId.from_str(id_) for id_ in obj.get("protocols", [])], - ) - contracts = cast( - List[PublicId], - [PublicId.from_str(id_) for id_ in obj.get("contracts", [])], - ) - skills = cast( - List[PublicId], [PublicId.from_str(id_) for id_ in obj.get("skills", [])], - ) + protocols = {PublicId.from_str(id_) for id_ in obj.get("protocols", set())} + contracts = {PublicId.from_str(id_) for id_ in obj.get("contracts", set())} + skills = {PublicId.from_str(id_) for id_ in obj.get("skills", set())} dependencies = dependencies_from_json(obj.get("dependencies", {})) description = cast(str, obj.get("description", "")) skill_config = SkillConfig( From 715626e0fc7bd071461a0433e7787fabe4f463e0 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 20:59:46 +0100 Subject: [PATCH 050/155] explicitly declare stub dependency in p2p_stub --- packages/fetchai/connections/p2p_stub/connection.yaml | 3 ++- packages/hashes.csv | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/fetchai/connections/p2p_stub/connection.yaml b/packages/fetchai/connections/p2p_stub/connection.yaml index e750264165..648e46edc1 100644 --- a/packages/fetchai/connections/p2p_stub/connection.yaml +++ b/packages/fetchai/connections/p2p_stub/connection.yaml @@ -11,7 +11,8 @@ fingerprint: __init__.py: QmW9XFKGsea4u3fupkFMcQutgsjqusCMBMyTcTmLLmQ4tR connection.py: QmaGhDBVKjeYm8fmHYYgFXD8mpZNVXDv4bmPtrnPcMtLP4 fingerprint_ignore_patterns: [] -connections: [] +connections: +- fetchai/stub:0.11.0 protocols: [] class_name: P2PStubConnection config: diff --git a/packages/hashes.csv b/packages/hashes.csv index 0705aa29d4..d03fdec6e4 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -27,7 +27,7 @@ fetchai/connections/local,QmcYTbs3mcfa271Uh4ShWciVRHLyahg9Y9PLU9wTYKVSqK fetchai/connections/oef,Qme8cEBS712GKeR6DUp1Jh9wYXhk5pUVRkrVs3VyFcdCnJ fetchai/connections/p2p_libp2p,QmZZT7e99db9ThH9HLHHxtEvMPySTyrbJ3GTCBDwJFFB6L fetchai/connections/p2p_libp2p_client,QmdaUH8yX1cLajsxu3p4J6YN7eaiTivfu5gHaAK13YnF2m -fetchai/connections/p2p_stub,QmPiLdtBHxxNWCeXfor1kvpxZcNiR9cbzRBQCR4CyzpNY3 +fetchai/connections/p2p_stub,QmcJr6LJAxoPDVqM6neUxbnGE2Vt5sS65hpH1pM1JKLUhS fetchai/connections/scaffold,Qme7K4MoENkpBaaW7oT13H1tdi9LXrcZxn8pGU9rFTNx5o fetchai/connections/soef,QmdeA4zHQbDQx35wpKPRuM4CANugGsPPbeyEGxyAqdf814 fetchai/connections/stub,QmQoNzjhQryS6QydFh7USkzQTNKiV4CvKmJuEBtgsHYYcL From 41696896a608c0c72822d4d54e1a429e1b7e293d Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 21:16:45 +0100 Subject: [PATCH 051/155] fix broken tests --- aea/protocols/base.py | 2 +- aea/protocols/generator/validate.py | 14 +++++++------- packages/hashes.csv | 4 ++-- tests/data/generator/t_protocol/message.py | 2 +- tests/data/generator/t_protocol/protocol.yaml | 2 +- tests/data/generator/t_protocol_no_ct/message.py | 2 +- .../data/generator/t_protocol_no_ct/protocol.yaml | 2 +- tests/test_protocols/test_base.py | 2 +- .../test_protocols/test_generator/test_validate.py | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/aea/protocols/base.py b/aea/protocols/base.py index 54fdc2d8b2..9fc0c3563c 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -269,7 +269,7 @@ def decode(obj: bytes) -> Message: body_json.ParseFromString(obj) body = dict(body_json) - msg = Message(body=body) + msg = Message(_body=body) return msg diff --git a/aea/protocols/generator/validate.py b/aea/protocols/generator/validate.py index 6235177a87..856ca02b9c 100644 --- a/aea/protocols/generator/validate.py +++ b/aea/protocols/generator/validate.py @@ -32,7 +32,7 @@ # The following names are reserved for standard message fields and cannot be # used as user defined names for performative or contents -RESERVED_NAMES = {"message_id", "dialogue_reference", "target", "performative"} +RESERVED_NAMES = {"_body", "message_id", "dialogue_reference", "target", "performative"} # Regular expression patterns for various fields in protocol specifications PERFORMATIVE_REGEX_PATTERN = "^[a-zA-Z0-9]+$|^[a-zA-Z0-9]+(_?[a-zA-Z0-9]+)+$" @@ -283,19 +283,19 @@ def _validate_performatives(performative: str) -> Tuple[bool, str]: :param performative: a performative. :return: Boolean result, and associated message. """ - if not _is_valid_regex(PERFORMATIVE_REGEX_PATTERN, performative): + if _is_reserved_name(performative): return ( False, - "Invalid name for performative '{}'. Performative names must match the following regular expression: {} ".format( - performative, PERFORMATIVE_REGEX_PATTERN + "Invalid name for performative '{}'. This name is reserved.".format( + performative, ), ) - if _is_reserved_name(performative): + if not _is_valid_regex(PERFORMATIVE_REGEX_PATTERN, performative): return ( False, - "Invalid name for performative '{}'. This name is reserved.".format( - performative, + "Invalid name for performative '{}'. Performative names must match the following regular expression: {} ".format( + performative, PERFORMATIVE_REGEX_PATTERN ), ) diff --git a/packages/hashes.csv b/packages/hashes.csv index 347e4615e1..aa763160d5 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -46,8 +46,8 @@ fetchai/protocols/oef_search,QmSCZCbwcLeuSqxxygbnSxrK5mA1gUUCvUbRfCDbg2KYni fetchai/protocols/scaffold,QmaQJxMae5XaHKDc838pcGEKhhYSUyKHGWiMfU6zEcVHsy fetchai/protocols/signing,QmfJynUc1yKxn1z9ttK9SAWjsFHZhZKtdCfJyuQbKZGzkG fetchai/protocols/state_update,QmWqrP339ceuy4c56KXDqG5xxTmqTyZC3Th9WVD12gMfhL -fetchai/protocols/t_protocol,Qmb7pLnen3VmikYN12Fq6mWgRLanSTnxLtYpcP1g2NYz74 -fetchai/protocols/t_protocol_no_ct,QmY5WNHZTDsQWqdRcW5TCBtvPd8j6pX7PgCBwEqfMMYufb +fetchai/protocols/t_protocol,Qmaho7bpQFTigJ5pBHiFm2C9yHbpkggAcfuBwGtc2J3tQS +fetchai/protocols/t_protocol_no_ct,QmdrdmaQdzdZjBg1yTq1ssWCWuxxvMsNxQuK1fPa8MkJgf fetchai/protocols/tac,QmVdTgN9iYwvd7NzkWubj8iNMoQxaNm8S9VxAYhYmmKWUp fetchai/skills/aries_alice,QmULodRjgTGygwGhV6EZiLZEBVyHvxFeSjorhU4SNMWRWM fetchai/skills/aries_faber,QmZ6DeFtFRuqvrFScFEgitTA9WRWEBzdKsiAwmPVShZpdf diff --git a/tests/data/generator/t_protocol/message.py b/tests/data/generator/t_protocol/message.py index b6c80b9e37..b46f3e8623 100644 --- a/tests/data/generator/t_protocol/message.py +++ b/tests/data/generator/t_protocol/message.py @@ -498,7 +498,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + 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 diff --git a/tests/data/generator/t_protocol/protocol.yaml b/tests/data/generator/t_protocol/protocol.yaml index 5bb413c7d6..a4b9b4e4cd 100644 --- a/tests/data/generator/t_protocol/protocol.yaml +++ b/tests/data/generator/t_protocol/protocol.yaml @@ -9,7 +9,7 @@ fingerprint: __init__.py: QmQy21g5sVYfmy4vSYuEFyPnobM4SA1dEouz5deXNssPWx custom_types.py: QmWg8HFav8w9tfZfMrTG5Uo7QpexvYKKkhpGPD18233pLw dialogues.py: QmdpXJCUP6wV6StDxByraFGveMcTSjjFhDju74S4QVQpxf - message.py: QmaTFAmfVGAoxmQ78J3q5KhNAk7ErwKfzsaMZik4bxdjEx + message.py: QmaVfAbnmrPrgxCS1BFM6miUbZcJLVYPdAS6AmUdrwZUwT serialization.py: QmYkdw251GKKCw6ZmPp4JmE6mXQ3jUhTgcfNKqsdCJbyfU t_protocol.proto: QmRuYvnojwkyZLzeECH3snomgoMJTB3m48yJiLq8LYsVb8 t_protocol_pb2.py: QmXrSgBBJCj8hbGCynKrvdkSDohQzHLPBA2vi5hDHmaGid diff --git a/tests/data/generator/t_protocol_no_ct/message.py b/tests/data/generator/t_protocol_no_ct/message.py index 9f8b76acb7..07cd54a1e5 100644 --- a/tests/data/generator/t_protocol_no_ct/message.py +++ b/tests/data/generator/t_protocol_no_ct/message.py @@ -474,7 +474,7 @@ def _is_consistent(self) -> bool: ) # Check correct contents - actual_nb_of_contents = len(self.body) - DEFAULT_BODY_SIZE + 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 diff --git a/tests/data/generator/t_protocol_no_ct/protocol.yaml b/tests/data/generator/t_protocol_no_ct/protocol.yaml index 40d7723965..e5c50fbdb0 100644 --- a/tests/data/generator/t_protocol_no_ct/protocol.yaml +++ b/tests/data/generator/t_protocol_no_ct/protocol.yaml @@ -8,7 +8,7 @@ aea_version: '>=0.6.0, <0.7.0' fingerprint: __init__.py: QmaaZ7Je2PRTkcnqy8oLR58yBDVpcRQ4BcaRe3sd3fug3Z dialogues.py: QmPHhh9wkKDG7Fiy9E2WkkggYULFhLrySihJpoBw3mRn2o - message.py: QmT5Goi3nLkkRRgqzL7fugSQG2Tpvrmm22jXNT7fn3L7ax + message.py: QmbAc7TAorD1h37tucaQNSjFaV4Xw67oirM2L42o4Lx7HU serialization.py: QmfMNm543uhKp7MwPcEvBMoCyi54phLZ4AHpC6S1S2y8Uv t_protocol_no_ct.proto: QmeZWVLhb6EUGr5AgVwgf2YTEZTSuCskpmxCwAE3sDU9sY t_protocol_no_ct_pb2.py: QmYtjyYTv1fQrwTS2x5ZkrNB8bpgH2vpPUJsUV29B7E4d9 diff --git a/tests/test_protocols/test_base.py b/tests/test_protocols/test_base.py index 357b1e9a8e..bb9f337234 100644 --- a/tests/test_protocols/test_base.py +++ b/tests/test_protocols/test_base.py @@ -123,7 +123,7 @@ class TestBaseSerializations: def setup_class(cls): """Set up the use case.""" cls.message = Message(content="hello") - cls.message2 = Message(body={"content": "hello"}) + cls.message2 = Message(_body={"content": "hello"}) def test_default_protobuf_serialization(self): """Test that the default Protobuf serialization works.""" diff --git a/tests/test_protocols/test_generator/test_validate.py b/tests/test_protocols/test_generator/test_validate.py index f1cb25633d..9b5965fffd 100644 --- a/tests/test_protocols/test_generator/test_validate.py +++ b/tests/test_protocols/test_generator/test_validate.py @@ -61,7 +61,7 @@ class TestValidate(TestCase): def test_is_reserved_name(self): """Test for the '_is_reserved_name' method.""" - invalid_content_name_1 = "body" + invalid_content_name_1 = "_body" assert _is_reserved_name(invalid_content_name_1) is True invalid_content_name_2 = "message_id" @@ -664,7 +664,7 @@ def test_validate_performatives(self): ) ) - invalid_content_type_6 = "body" + invalid_content_type_6 = "_body" invalid_result_6, invalid_msg_6 = _validate_performatives( invalid_content_type_6 ) From d2abe8d29e8591c14376d2b963262aa7954fe599 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 21:27:13 +0100 Subject: [PATCH 052/155] fix pylint issues --- .pylintrc | 2 +- aea/aea_builder.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pylintrc b/.pylintrc index 83401493fb..4a1d62c80a 100644 --- a/.pylintrc +++ b/.pylintrc @@ -34,4 +34,4 @@ ignored-modules=aiohttp,defusedxml,gym,fetch,matplotlib,memory_profiler,numpy,oe [DESIGN] min-public-methods=1 -max-public-methods=35 +max-public-methods=36 diff --git a/aea/aea_builder.py b/aea/aea_builder.py index 40ab4c20fe..d0ccc67183 100644 --- a/aea/aea_builder.py +++ b/aea/aea_builder.py @@ -228,7 +228,7 @@ def install_dependencies(self) -> None: install_dependency(name, d) -class AEABuilder(WithLogger): # pylint: disable=too-many-public-methods +class AEABuilder(WithLogger): """ This class helps to build an AEA. From d5debbaaed561d1fff4fbcef01f0e6a015eea68d Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Sat, 17 Oct 2020 23:09:24 +0200 Subject: [PATCH 053/155] try to read PUBLIC_ID from __init__.py of aea package --- aea/configurations/base.py | 45 ++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/aea/configurations/base.py b/aea/configurations/base.py index 8307660c29..bb07ea3f27 100644 --- a/aea/configurations/base.py +++ b/aea/configurations/base.py @@ -23,7 +23,6 @@ import functools import gzip import json -import os import pprint import re from abc import ABC, abstractmethod @@ -56,7 +55,7 @@ from aea.__version__ import __version__ as __aea_version__ from aea.exceptions import enforce -from aea.helpers.base import RegexConstrainedString, recursive_update +from aea.helpers.base import RegexConstrainedString, load_module, recursive_update from aea.helpers.ipfs.base import IPFSHashOnly @@ -71,6 +70,8 @@ DEFAULT_REGISTRY_PATH = str(Path("./", "packages")) DEFAULT_LICENSE = "Apache-2.0" +PACKAGE_PUBLIC_ID_VAR_NAME = "PUBLIC_ID" + DEFAULT_FINGERPRINT_IGNORE_PATTERNS = [ ".DS_Store", "*__pycache__/*", @@ -2330,28 +2331,38 @@ def _check_aea_version(package_configuration: PackageConfiguration): def _compare_public_ids( - package_configuration: PackageConfiguration, package_directory: Path + component_configuration: ComponentConfiguration, package_directory: Path ) -> None: """Compare the public ids in config and init file.""" - if package_configuration.package_type != PackageType.SKILL: + if component_configuration.package_type != PackageType.SKILL: return filename = "__init__.py" - public_id_in_init = _get_public_id_from_file(package_directory, filename) - if public_id_in_init == package_configuration.public_id: # unfinished + public_id_in_init = _get_public_id_from_file( + component_configuration, package_directory, filename + ) + if ( + public_id_in_init is not None + and public_id_in_init != component_configuration.public_id + ): raise ValueError( - "The public id specified in {} for package {} does not match the one specific in {}.yaml".format( - filename, package_directory, package_configuration.package_type.value, - ) + f"The public id specified in {filename} for package {package_directory} does not match the one specific in {component_configuration.package_type.value}.yaml" ) def _get_public_id_from_file( - package_directory: Path, filename: str + component_configuration: ComponentConfiguration, + package_directory: Path, + filename: str, ) -> Optional[PublicId]: - """Get the public id from an init if present.""" - public_id = None # Optional[PublicId] - fp = os.path.join(package_directory, filename) - with open(fp, "r") as _: - pass - # unfinished - return public_id + """ + Get the public id from an init if present. + + :param component_configuration: the component configuration. + :param package_directory: the path to the package directory. + :param filename: the file + :return: the public id, if found. + """ + path_to_file = Path(package_directory, filename) + module = load_module(component_configuration.prefix_import_path, path_to_file) + package_public_id = getattr(module, PACKAGE_PUBLIC_ID_VAR_NAME, None) + return package_public_id From 836b3697426ac3e6a73c47dced16748b54475483 Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 22:29:54 +0100 Subject: [PATCH 054/155] fix setter test --- tests/test_protocols/test_base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_protocols/test_base.py b/tests/test_protocols/test_base.py index bb9f337234..04698b99c7 100644 --- a/tests/test_protocols/test_base.py +++ b/tests/test_protocols/test_base.py @@ -154,8 +154,8 @@ def test_set(self): def test_body_setter(self): """Test the body setter.""" m_dict = {"Hello": "World"} - self.message2.body = m_dict - assert "Hello" in self.message2.body.keys() + self.message2._body = m_dict + assert "Hello" in self.message2._body.keys() class TestProtocolFromDir: From 37435a3de024ddbe2ccf0fcaba403a6667fe2a9e Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sat, 17 Oct 2020 22:34:59 +0100 Subject: [PATCH 055/155] add missing test tools test --- tests/test_test_tools/test_test_cases.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tests/test_test_tools/test_test_cases.py b/tests/test_test_tools/test_test_cases.py index 24a71c4969..355987cbb7 100644 --- a/tests/test_test_tools/test_test_cases.py +++ b/tests/test_test_tools/test_test_cases.py @@ -219,7 +219,7 @@ def test_replace_file_content(self): assert f.read() == "hi" -class TestAddAndRejectComponent(AEATestCaseEmpty): +class TestAddAndEjectComponent(AEATestCaseEmpty): """Test add/reject components.""" def test_add_and_eject(self): @@ -231,6 +231,18 @@ def test_add_and_eject(self): assert result.exit_code == 0 +class TestAddAndRemoveComponent(AEATestCaseEmpty): + """Test add/remove components.""" + + def test_add_and_eject(self): + """Test add/reject components.""" + result = self.add_item("skill", "fetchai/echo:0.9.0", local=True) + assert result.exit_code == 0 + + result = self.remove_item("skill", "fetchai/echo:0.9.0") + assert result.exit_code == 0 + + class TestGenerateAndAddKey(AEATestCaseEmpty): """Test generate and add private key.""" From 92701403cd4af66f6d0762fbb0eb55c54ff6771e Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sun, 18 Oct 2020 09:32:11 +0100 Subject: [PATCH 056/155] fix eject functionality and docs tests --- aea/cli/eject.py | 19 +++++++---- aea/cli/utils/package_utils.py | 28 ++++++++++++++++ docs/skill-guide.md | 32 +++++++++++++++++++ .../test_skill_guide/test_skill_guide.py | 6 ++++ 4 files changed, 78 insertions(+), 7 deletions(-) diff --git a/aea/cli/eject.py b/aea/cli/eject.py index 0cb1ca2d55..0a61b3e990 100644 --- a/aea/cli/eject.py +++ b/aea/cli/eject.py @@ -32,6 +32,7 @@ copy_package_directory, get_package_path, is_item_present, + update_item_public_id_in_init, ) from aea.configurations.base import DEFAULT_VERSION, PublicId @@ -88,13 +89,11 @@ def _eject_item(ctx: Context, item_type: str, public_id: PublicId): :raises: ClickException if item is absent at source path or present at destenation path. """ item_type_plural = item_type + "s" - supported_items = getattr(ctx.agent_config, item_type_plural) - if ( - not is_item_present(ctx, item_type, public_id) - or public_id not in supported_items - ): # pragma: no cover + if not is_item_present(ctx, item_type, public_id): # pragma: no cover raise click.ClickException( - "{} {} not found in agent items.".format(item_type.title(), public_id) + "{} {} not found in agent's vendor items.".format( + item_type.title(), public_id + ) ) src = get_package_path(ctx, item_type, public_id) dst = get_package_path(ctx, item_type, public_id, is_vendor=False) @@ -115,8 +114,14 @@ def _eject_item(ctx: Context, item_type: str, public_id: PublicId): update_item_config( item_type, Path(dst), author=new_public_id.author, version=new_public_id.version ) + update_item_public_id_in_init(item_type, Path(dst), new_public_id) + supported_items = getattr(ctx.agent_config, item_type_plural) + for p_id in supported_items: + if p_id.author == public_id.author and p_id.name == public_id.name: + present_public_id = p_id + break supported_items.add(new_public_id) - supported_items.remove(public_id) + supported_items.remove(present_public_id) update_item_config("agent", Path(ctx.cwd), **{item_type_plural: supported_items}) shutil.rmtree(src) diff --git a/aea/cli/utils/package_utils.py b/aea/cli/utils/package_utils.py index 2dd38b23fc..02c9a43e0e 100644 --- a/aea/cli/utils/package_utils.py +++ b/aea/cli/utils/package_utils.py @@ -35,6 +35,7 @@ AgentConfig, ComponentConfiguration, DEFAULT_AEA_CONFIG_FILE, + PACKAGE_PUBLIC_ID_VAR_NAME, PackageType, PublicId, _compute_fingerprint, @@ -575,3 +576,30 @@ def get_wallet_from_agent_config(agent_config: AgentConfig) -> Wallet: } wallet = Wallet(private_key_paths) return wallet + + +def update_item_public_id_in_init( + item_type: str, package_path: Path, item_id: PublicId +) -> None: + """ + Update item config and item config file. + + :param item_type: type of item. + :param package_path: path to a package folder. + :param item_id: public_id + + :return: None + """ + if item_type != "skill": + return + init_filepath = os.path.join(package_path, "__init__.py") + with open(init_filepath, "r") as f: + file_content = f.readlines() + with open(init_filepath, "w") as f: + for line in file_content: + if PACKAGE_PUBLIC_ID_VAR_NAME in line: + f.write( + f'{PACKAGE_PUBLIC_ID_VAR_NAME} = PublicId.from_str("{str(item_id)}")' + ) + else: + f.write(line) diff --git a/docs/skill-guide.md b/docs/skill-guide.md index 391399e71f..7ebe004d9f 100644 --- a/docs/skill-guide.md +++ b/docs/skill-guide.md @@ -361,6 +361,38 @@ Importantly, the keys `my_search_behaviour` and `my_search_handler` are used in We place this code in `my_aea/skills/my_search/skill.yaml`. +Similarly, we replace `my_aea/skills/my_search/__init__.py` as follows: + +``` python +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2019 Fetch.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 implementation of the error skill.""" + +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 We need to update the fingerprint of our skill next: 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 2f53ac319b..698153ce68 100644 --- a/tests/test_docs/test_skill_guide/test_skill_guide.py +++ b/tests/test_docs/test_skill_guide/test_skill_guide.py @@ -142,6 +142,12 @@ def test_update_skill_and_run(self): with open(path, "w") as file: file.write(yaml_code_block[0]) # block one is yaml + path = Path(self.t, search_aea, "skills", skill_name, "__init__.py") + original = Path(AEA_DIR, "skills", "scaffold", "__init__.py") + assert filecmp.cmp(path, original) + with open(path, "w") as file: + file.write(self.code_blocks[3]) # block four is init + # update fingerprint self.fingerprint_item("skill", skill_id) From c294e50702087d6561ba9c437b78614356c6ae3c Mon Sep 17 00:00:00 2001 From: David Minarsch Date: Sun, 18 Oct 2020 10:37:09 +0100 Subject: [PATCH 057/155] fix tests --- aea/cli/eject.py | 8 ++++++- aea/cli/fingerprint.py | 34 +++++++++++++++--------------- aea/cli/generate.py | 19 +++++++---------- aea/configurations/base.py | 2 +- tests/test_cli/test_eject.py | 8 +++---- tests/test_cli/test_fingerprint.py | 18 ++++++++-------- 6 files changed, 46 insertions(+), 43 deletions(-) diff --git a/aea/cli/eject.py b/aea/cli/eject.py index 0a61b3e990..a79505d0af 100644 --- a/aea/cli/eject.py +++ b/aea/cli/eject.py @@ -24,6 +24,7 @@ import click +from aea.cli.fingerprint import fingerprint_item from aea.cli.utils.click_utils import PublicIdParameter from aea.cli.utils.config import try_to_load_agent_config, update_item_config from aea.cli.utils.context import Context @@ -125,4 +126,9 @@ def _eject_item(ctx: Context, item_type: str, public_id: PublicId): update_item_config("agent", Path(ctx.cwd), **{item_type_plural: supported_items}) shutil.rmtree(src) - click.echo("Successfully ejected {} {} to {}.".format(item_type, public_id, dst)) + fingerprint_item(ctx, item_type, new_public_id) + click.echo( + "Successfully ejected {} {} to {} as {}.".format( + item_type, public_id, dst, new_public_id + ) + ) diff --git a/aea/cli/fingerprint.py b/aea/cli/fingerprint.py index b1d2aade53..5844488020 100644 --- a/aea/cli/fingerprint.py +++ b/aea/cli/fingerprint.py @@ -19,12 +19,13 @@ """Implementation of the 'aea add' subcommand.""" from pathlib import Path -from typing import Dict, cast +from typing import Dict import click from aea.cli.utils.click_utils import PublicIdParameter from aea.cli.utils.context import Context +from aea.cli.utils.decorators import pass_ctx from aea.configurations.base import ( # noqa: F401 # pylint: disable=unused-import DEFAULT_CONNECTION_CONFIG_FILE, DEFAULT_PROTOCOL_CONFIG_FILE, @@ -38,52 +39,51 @@ @click.group() @click.pass_context -def fingerprint(click_context): # pylint: disable=unused-argument +def fingerprint(click_context: click.core.Context): # pylint: disable=unused-argument """Fingerprint a resource.""" @fingerprint.command() @click.argument("connection_public_id", type=PublicIdParameter(), required=True) -@click.pass_context -def connection(click_context, connection_public_id: PublicId): +@pass_ctx +def connection(ctx: Context, connection_public_id: PublicId): """Fingerprint a connection and add the fingerprints to the configuration file.""" - _fingerprint_item(click_context, "connection", connection_public_id) + fingerprint_item(ctx, "connection", connection_public_id) @fingerprint.command() @click.argument("contract_public_id", type=PublicIdParameter(), required=True) -@click.pass_context -def contract(click_context, contract_public_id: PublicId): +@pass_ctx +def contract(ctx: Context, contract_public_id: PublicId): """Fingerprint a contract and add the fingerprints to the configuration file.""" - _fingerprint_item(click_context, "contract", contract_public_id) + fingerprint_item(ctx, "contract", contract_public_id) @fingerprint.command() @click.argument("protocol_public_id", type=PublicIdParameter(), required=True) -@click.pass_context -def protocol(click_context, protocol_public_id): +@pass_ctx +def protocol(ctx: Context, protocol_public_id: PublicId): """Fingerprint a protocol and add the fingerprints to the configuration file..""" - _fingerprint_item(click_context, "protocol", protocol_public_id) + fingerprint_item(ctx, "protocol", protocol_public_id) @fingerprint.command() @click.argument("skill_public_id", type=PublicIdParameter(), required=True) -@click.pass_context -def skill(click_context, skill_public_id: PublicId): +@pass_ctx +def skill(ctx: Context, skill_public_id: PublicId): """Fingerprint a skill and add the fingerprints to the configuration file.""" - _fingerprint_item(click_context, "skill", skill_public_id) + fingerprint_item(ctx, "skill", skill_public_id) -def _fingerprint_item(click_context, item_type, item_public_id) -> None: +def fingerprint_item(ctx: Context, item_type: str, item_public_id: PublicId) -> None: """ Fingerprint components of an item. - :param click_context: the click context. + :param ctx: the context. :param item_type: the item type. :param item_public_id: the item public id. :return: None """ - ctx = cast(Context, click_context.obj) item_type_plural = item_type + "s" click.echo( diff --git a/aea/cli/generate.py b/aea/cli/generate.py index be3e7df825..6838ba0c01 100644 --- a/aea/cli/generate.py +++ b/aea/cli/generate.py @@ -20,13 +20,12 @@ """Implementation of the 'aea generate' subcommand.""" import os -from typing import cast import click -from aea.cli.fingerprint import _fingerprint_item +from aea.cli.fingerprint import fingerprint_item from aea.cli.utils.context import Context -from aea.cli.utils.decorators import check_aea_project, clean_after +from aea.cli.utils.decorators import check_aea_project, clean_after, pass_ctx from aea.cli.utils.loggers import logger from aea.configurations.base import ( DEFAULT_AEA_CONFIG_FILE, @@ -40,23 +39,21 @@ @click.group() @click.pass_context @check_aea_project -def generate(click_context): # pylint: disable=unused-argument +def generate(click_context: click.core.Context): # pylint: disable=unused-argument """Generate a resource for the agent.""" @generate.command() @click.argument("protocol_specification_path", type=str, required=True) -@click.pass_context -def protocol(click_context, protocol_specification_path: str): +@pass_ctx +def protocol(ctx: Context, protocol_specification_path: str): """Generate a protocol based on a specification and add it to the configuration file and agent.""" - _generate_item(click_context, "protocol", protocol_specification_path) + _generate_item(ctx, "protocol", protocol_specification_path) @clean_after -def _generate_item(click_context, item_type, specification_path): +def _generate_item(ctx: Context, item_type: str, specification_path: str): """Generate an item based on a specification and add it to the configuration file and agent.""" - ctx = cast(Context, click_context.obj) - # Get existing items existing_id_list = getattr(ctx.agent_config, "{}s".format(item_type)) existing_item_list = [public_id.name for public_id in existing_id_list] @@ -135,4 +132,4 @@ def _generate_item(click_context, item_type, specification_path): + str(e) ) - _fingerprint_item(click_context, "protocol", protocol_spec.public_id) + fingerprint_item(ctx, "protocol", protocol_spec.public_id) diff --git a/aea/configurations/base.py b/aea/configurations/base.py index bb07ea3f27..89094eb1d9 100644 --- a/aea/configurations/base.py +++ b/aea/configurations/base.py @@ -2344,7 +2344,7 @@ def _compare_public_ids( public_id_in_init is not None and public_id_in_init != component_configuration.public_id ): - raise ValueError( + raise ValueError( # pragma: nocover f"The public id specified in {filename} for package {package_directory} does not match the one specific in {component_configuration.package_type.value}.yaml" ) diff --git a/tests/test_cli/test_eject.py b/tests/test_cli/test_eject.py index 28672fcc7e..7d4ae36ef6 100644 --- a/tests/test_cli/test_eject.py +++ b/tests/test_cli/test_eject.py @@ -37,25 +37,25 @@ def test_eject_commands_positive(self): self.add_item("skill", "fetchai/gym:0.9.0") self.add_item("contract", "fetchai/erc1155:0.11.0") - self.run_cli_command("eject", "connection", "fetchai/gym:0.9.0", cwd=cwd) + self.eject_item("connection", "fetchai/gym:0.9.0") assert "gym" not in os.listdir( (os.path.join(cwd, "vendor", "fetchai", "connections")) ) assert "gym" in os.listdir((os.path.join(cwd, "connections"))) - self.run_cli_command("eject", "protocol", "fetchai/gym:0.7.0", cwd=cwd) + self.eject_item("protocol", "fetchai/gym:0.7.0") assert "gym" not in os.listdir( (os.path.join(cwd, "vendor", "fetchai", "protocols")) ) assert "gym" in os.listdir((os.path.join(cwd, "protocols"))) - self.run_cli_command("eject", "skill", "fetchai/gym:0.9.0", cwd=cwd) + self.eject_item("skill", "fetchai/gym:0.9.0") assert "gym" not in os.listdir( (os.path.join(cwd, "vendor", "fetchai", "skills")) ) assert "gym" in os.listdir((os.path.join(cwd, "skills"))) - self.run_cli_command("eject", "contract", "fetchai/erc1155:0.11.0", cwd=cwd) + self.eject_item("contract", "fetchai/erc1155:0.11.0") assert "erc1155" not in os.listdir( (os.path.join(cwd, "vendor", "fetchai", "contracts")) ) diff --git a/tests/test_cli/test_fingerprint.py b/tests/test_cli/test_fingerprint.py index f89f9ba3a3..6179c190c1 100644 --- a/tests/test_cli/test_fingerprint.py +++ b/tests/test_cli/test_fingerprint.py @@ -23,13 +23,13 @@ from click import ClickException from aea.cli import cli -from aea.cli.fingerprint import _fingerprint_item +from aea.cli.fingerprint import fingerprint_item from tests.conftest import CLI_LOG_OPTION, CliRunner from tests.test_cli.tools_for_testing import ConfigLoaderMock, ContextMock, PublicIdMock -@mock.patch("aea.cli.fingerprint._fingerprint_item") +@mock.patch("aea.cli.fingerprint.fingerprint_item") class FingerprintCommandTestCase(TestCase): """Test case for CLI fingerprint command.""" @@ -75,25 +75,25 @@ def _raise_exception(*args, **kwargs): @mock.patch("aea.cli.fingerprint.Path.open", mock.mock_open()) class FingerprintItemTestCase(TestCase): - """Test case for _fingerprint_item method.""" + """Test case for fingerprint_item method.""" @mock.patch("aea.cli.fingerprint.Path.exists", return_value=False) @mock.patch( "aea.cli.fingerprint.ConfigLoader.from_configuration_type", return_value=ConfigLoaderMock(), ) - def test__fingerprint_item_package_not_found(self, *mocks): - """Test for _fingerprint_item package not found result.""" + def test_fingerprint_item_package_not_found(self, *mocks): + """Test for fingerprint_item package not found result.""" public_id = PublicIdMock() with self.assertRaises(ClickException) as cm: - _fingerprint_item(ContextMock(), "skill", public_id) + fingerprint_item(ContextMock(), "skill", public_id) self.assertIn("Package not found at path", cm.exception.message) @mock.patch( "aea.cli.fingerprint.ConfigLoader.from_configuration_type", _raise_exception ) - def test__fingerprint_item_exception(self, *mocks): - """Test for _fingerprint_item exception raised.""" + def test_fingerprint_item_exception(self, *mocks): + """Test for fingerprint_item exception raised.""" public_id = PublicIdMock() with self.assertRaises(ClickException): - _fingerprint_item(ContextMock(), "skill", public_id) + fingerprint_item(ContextMock(), "skill", public_id) From 298098ebd4c8a7a14d36562a095525609ed2515c Mon Sep 17 00:00:00 2001 From: MarcoFavorito Date: Sun, 18 Oct 2020 12:32:01 +0200 Subject: [PATCH 058/155] merge with develop after release 0.6.3 --- .github/workflows/workflow.yml | 2 +- .pylintrc | 9 +- HISTORY.md | 37 + Makefile | 2 +- aea/__version__.py | 2 +- aea/aea.py | 34 +- aea/aea_builder.py | 167 +- aea/agent.py | 20 +- aea/agent_loop.py | 110 +- aea/cli/add.py | 17 +- aea/cli/config.py | 350 ++++- aea/cli/core.py | 6 +- aea/cli/freeze.py | 2 +- aea/cli/generate.py | 4 +- aea/cli/generate_wealth.py | 21 +- aea/cli/get_address.py | 17 +- aea/cli/get_wealth.py | 21 +- aea/cli/install.py | 61 +- aea/cli/interact.py | 2 +- aea/cli/launch.py | 1 - aea/cli/push.py | 12 +- aea/cli/registry/add.py | 16 +- aea/cli/registry/fetch.py | 21 +- aea/cli/registry/utils.py | 45 +- aea/cli/remove.py | 421 +++++- aea/cli/run.py | 4 +- aea/cli/transfer.py | 141 ++ aea/cli/upgrade.py | 328 ++++ aea/cli/utils/click_utils.py | 36 +- aea/cli/utils/config.py | 113 +- aea/cli/utils/generic.py | 8 +- aea/cli/utils/package_utils.py | 112 +- aea/cli_gui/__init__.py | 2 +- aea/components/base.py | 4 +- aea/components/loader.py | 4 - aea/configurations/base.py | 430 +++++- aea/configurations/constants.py | 10 +- aea/configurations/loader.py | 270 ++-- aea/configurations/project.py | 76 + aea/configurations/pypi.py | 83 +- .../schemas/aea-config_schema.json | 2 +- .../base-custom_config.json | 25 + .../connection-custom_config.json | 28 + .../skill-custom_config.json | 103 ++ .../schemas/connection-config_schema.json | 3 +- .../schemas/contract-config_schema.json | 6 +- aea/configurations/schemas/definitions.json | 2 +- .../schemas/protocol-config_schema.json | 3 +- .../schemas/skill-config_schema.json | 34 +- aea/connections/base.py | 28 +- aea/connections/stub/connection.py | 23 +- aea/connections/stub/connection.yaml | 6 +- aea/connections/stub/readme.md | 2 +- aea/contracts/base.py | 14 +- aea/crypto/base.py | 9 + aea/crypto/cosmos.py | 45 +- aea/crypto/ethereum.py | 27 +- aea/crypto/helpers.py | 6 +- aea/crypto/ledger_apis.py | 3 - aea/crypto/wallet.py | 6 +- aea/decision_maker/base.py | 19 +- aea/decision_maker/default.py | 20 +- aea/helpers/async_utils.py | 256 +++- aea/helpers/base.py | 198 +-- aea/helpers/exec_timeout.py | 6 +- aea/helpers/install_dependency.py | 82 + aea/helpers/logging.py | 8 + aea/helpers/multiaddr/base.py | 70 +- aea/helpers/multiple_executor.py | 15 +- aea/helpers/search/generic.py | 2 +- aea/helpers/search/models.py | 46 +- aea/helpers/win32.py | 4 +- aea/helpers/yaml_utils.py | 161 ++ aea/launcher.py | 27 +- aea/mail/base.py | 32 +- aea/manager.py | 597 ++++++++ aea/multiplexer.py | 163 +- aea/protocols/base.py | 9 +- aea/protocols/default/README.md | 2 +- aea/protocols/default/message.py | 6 +- aea/protocols/default/protocol.yaml | 6 +- aea/protocols/dialogue/base.py | 83 +- aea/protocols/generator/base.py | 23 +- .../generator/extract_specification.py | 2 +- aea/protocols/signing/README.md | 2 +- aea/protocols/signing/message.py | 6 +- aea/protocols/signing/protocol.yaml | 6 +- aea/protocols/state_update/README.md | 2 +- aea/protocols/state_update/message.py | 6 +- aea/protocols/state_update/protocol.yaml | 6 +- aea/registries/base.py | 40 +- aea/registries/filter.py | 23 +- aea/registries/resources.py | 16 +- aea/runner.py | 8 +- aea/runtime.py | 287 ++-- aea/skills/base.py | 3 +- aea/skills/error/skill.yaml | 5 +- aea/skills/scaffold/skill.yaml | 1 + aea/test_tools/generic.py | 134 +- aea/test_tools/test_cases.py | 50 +- aea/test_tools/test_skill.py | 432 ++++++ benchmark/run_from_branch.sh | 2 +- deploy-image/docker-env.sh | 2 +- develop-image/docker-env.sh | 2 +- docs/acn.md | 57 +- docs/agent-vs-aea.md | 6 +- docs/api/aea.md | 4 +- docs/api/aea_builder.md | 56 +- docs/api/agent.md | 4 +- docs/api/agent_loop.md | 93 +- docs/api/configurations/base.md | 400 ++++- docs/api/configurations/loader.md | 107 +- docs/api/configurations/project.md | 69 + docs/api/connections/base.md | 4 +- docs/api/crypto/base.md | 15 + docs/api/crypto/cosmos.md | 27 +- docs/api/crypto/ethereum.md | 14 + docs/api/decision_maker/base.md | 5 +- docs/api/helpers/async_utils.md | 124 +- docs/api/helpers/base.md | 99 +- docs/api/helpers/dialogue/base.md | 48 +- docs/api/helpers/logging.md | 9 + docs/api/helpers/multiaddr/base.md | 47 +- docs/api/helpers/pipe.md | 103 +- docs/api/helpers/search/models.md | 63 + docs/api/helpers/transaction/base.md | 144 ++ docs/api/helpers/yaml_utils.md | 128 ++ docs/api/mail/base.md | 20 + docs/api/manager.md | 374 +++++ docs/api/multiplexer.md | 55 +- docs/api/protocols/generator/base.md | 11 +- docs/api/protocols/generator/common.md | 17 + docs/api/registries/base.md | 158 +- docs/api/registries/filter.md | 2 +- docs/api/registries/resources.md | 12 +- docs/api/runtime.md | 83 +- docs/api/test_tools/generic.md | 9 +- .../api/{helpers => test_tools}/test_cases.md | 13 +- docs/api/test_tools/test_skill.md | 192 +++ docs/aries-cloud-agent-demo.md | 24 +- docs/assets/acn-tiers.png | Bin 0 -> 42233 bytes docs/assets/acn-trust-security.png | Bin 0 -> 48871 bytes docs/assets/dht.png | Bin 0 -> 113873 bytes docs/build-aea-programmatically.md | 10 +- docs/car-park-skills.md | 32 +- docs/cli-gui.md | 3 +- docs/cli-vs-programmatic-aeas.md | 8 +- docs/config.md | 10 +- docs/connect-a-frontend.md | 4 +- docs/contract.md | 32 +- docs/core-components-1.md | 4 +- docs/debug.md | 17 + docs/deployment.md | 2 +- docs/erc1155-skills.md | 38 +- docs/generic-skills-step-by-step.md | 72 +- docs/generic-skills.md | 32 +- docs/gym-skill.md | 6 +- docs/http-connection-and-skill.md | 6 +- docs/index.md | 16 +- docs/language-agnostic-definition.md | 4 +- docs/logging.md | 8 +- docs/message-routing.md | 8 +- docs/ml-skills.md | 32 +- docs/multi-agent-manager.md | 89 ++ docs/multiplexer-standalone.md | 4 +- docs/oef-ledger.md | 12 +- docs/orm-integration.md | 34 +- docs/p2p-connection.md | 20 +- docs/package-imports.md | 2 +- docs/protocol-generator.md | 30 +- docs/protocol.md | 22 +- docs/questions-and-answers.md | 2 +- docs/quickstart.md | 30 +- docs/simple-oef-usage.md | 35 +- docs/simple-oef.md | 2 +- docs/skill-guide.md | 30 +- docs/skill-testing.md | 103 ++ docs/skill.md | 4 +- docs/tac-skills-contract.md | 44 +- docs/tac-skills.md | 66 +- docs/thermometer-skills.md | 34 +- docs/upgrading.md | 8 + docs/wealth.md | 15 +- docs/weather-skills.md | 32 +- examples/gym_ex/proxy/env.py | 2 +- fetchai_private_key.txt | 1 + mkdocs.yml | 12 +- packages/fetchai/agents/aries_alice/README.md | 15 + .../agents/aries_alice/aea-config.yaml | 28 +- packages/fetchai/agents/aries_faber/README.md | 19 + .../agents/aries_faber/aea-config.yaml | 28 +- .../fetchai/agents/car_data_buyer/README.md | 13 + .../agents/car_data_buyer/aea-config.yaml | 30 +- .../fetchai/agents/car_detector/README.md | 13 + .../agents/car_detector/aea-config.yaml | 30 +- .../fetchai/agents/erc1155_client/README.md | 13 + .../agents/erc1155_client/aea-config.yaml | 36 +- .../fetchai/agents/erc1155_deployer/README.md | 13 + .../agents/erc1155_deployer/aea-config.yaml | 36 +- .../fetchai/agents/generic_buyer/README.md | 14 + .../agents/generic_buyer/aea-config.yaml | 28 +- .../fetchai/agents/generic_seller/README.md | 14 + .../agents/generic_seller/aea-config.yaml | 28 +- packages/fetchai/agents/gym_aea/README.md | 15 + .../fetchai/agents/gym_aea/aea-config.yaml | 16 +- .../fetchai/agents/ml_data_provider/README.md | 15 + .../agents/ml_data_provider/aea-config.yaml | 30 +- .../fetchai/agents/ml_model_trainer/README.md | 13 + .../agents/ml_model_trainer/aea-config.yaml | 30 +- .../agents/my_first_aea/aea-config.yaml | 12 +- .../simple_service_registration/README.md | 11 + .../aea-config.yaml | 22 +- .../fetchai/agents/tac_controller/README.md | 13 + .../agents/tac_controller/aea-config.yaml | 22 +- .../agents/tac_controller_contract/README.md | 13 + .../tac_controller_contract/aea-config.yaml | 44 +- .../fetchai/agents/tac_participant/README.md | 15 + .../agents/tac_participant/aea-config.yaml | 32 +- .../agents/tac_participant_contract/README.md | 15 + .../tac_participant_contract/aea-config.yaml | 62 + .../fetchai/agents/thermometer_aea/README.md | 15 + .../agents/thermometer_aea/aea-config.yaml | 30 +- .../agents/thermometer_client/README.md | 13 + .../agents/thermometer_client/aea-config.yaml | 30 +- .../fetchai/agents/weather_client/README.md | 13 + .../agents/weather_client/aea-config.yaml | 30 +- .../fetchai/agents/weather_station/README.md | 15 + .../agents/weather_station/aea-config.yaml | 30 +- packages/fetchai/connections/gym/README.md | 2 +- .../fetchai/connections/gym/connection.py | 6 +- .../fetchai/connections/gym/connection.yaml | 10 +- .../fetchai/connections/http_client/README.md | 2 +- .../connections/http_client/connection.py | 66 +- .../connections/http_client/connection.yaml | 12 +- .../fetchai/connections/http_server/README.md | 2 +- .../connections/http_server/connection.py | 2 +- .../connections/http_server/connection.yaml | 12 +- packages/fetchai/connections/ledger/README.md | 4 +- packages/fetchai/connections/ledger/base.py | 13 +- .../fetchai/connections/ledger/connection.py | 1 + .../connections/ledger/connection.yaml | 20 +- .../connections/ledger/contract_dispatcher.py | 11 +- .../connections/ledger/ledger_dispatcher.py | 10 +- .../fetchai/connections/local/connection.py | 69 +- .../fetchai/connections/local/connection.yaml | 6 +- packages/fetchai/connections/oef/README.md | 2 +- .../fetchai/connections/oef/connection.py | 12 +- .../fetchai/connections/oef/connection.yaml | 12 +- .../connections/oef/object_translator.py | 16 +- .../fetchai/connections/p2p_libp2p/README.md | 4 +- .../connections/p2p_libp2p/connection.py | 71 +- .../connections/p2p_libp2p/connection.yaml | 7 +- .../connections/p2p_libp2p_client/README.md | 2 +- .../p2p_libp2p_client/connection.py | 11 +- .../p2p_libp2p_client/connection.yaml | 7 +- .../fetchai/connections/p2p_stub/README.md | 2 +- .../connections/p2p_stub/connection.py | 3 +- .../connections/p2p_stub/connection.yaml | 6 +- packages/fetchai/connections/soef/README.md | 4 +- .../fetchai/connections/soef/connection.py | 97 +- .../fetchai/connections/soef/connection.yaml | 12 +- packages/fetchai/connections/tcp/README.md | 2 +- packages/fetchai/connections/tcp/base.py | 5 +- .../fetchai/connections/tcp/connection.yaml | 10 +- .../fetchai/connections/tcp/tcp_client.py | 2 +- .../fetchai/connections/tcp/tcp_server.py | 2 +- .../fetchai/connections/webhook/README.md | 2 +- .../fetchai/connections/webhook/connection.py | 6 +- .../connections/webhook/connection.yaml | 10 +- .../fetchai/contracts/erc1155/contract.py | 137 +- .../fetchai/contracts/erc1155/contract.yaml | 4 +- .../fetchai/protocols/contract_api/README.md | 2 +- .../fetchai/protocols/contract_api/message.py | 8 +- .../protocols/contract_api/protocol.yaml | 6 +- packages/fetchai/protocols/fipa/README.md | 2 +- packages/fetchai/protocols/fipa/message.py | 6 +- packages/fetchai/protocols/fipa/protocol.yaml | 6 +- packages/fetchai/protocols/gym/README.md | 2 +- packages/fetchai/protocols/gym/message.py | 6 +- packages/fetchai/protocols/gym/protocol.yaml | 6 +- packages/fetchai/protocols/http/README.md | 2 +- packages/fetchai/protocols/http/message.py | 6 +- packages/fetchai/protocols/http/protocol.yaml | 6 +- .../fetchai/protocols/ledger_api/README.md | 2 +- .../fetchai/protocols/ledger_api/message.py | 6 +- .../protocols/ledger_api/protocol.yaml | 6 +- packages/fetchai/protocols/ml_trade/README.md | 2 +- .../fetchai/protocols/ml_trade/message.py | 6 +- .../fetchai/protocols/ml_trade/protocol.yaml | 6 +- .../fetchai/protocols/oef_search/README.md | 2 +- .../fetchai/protocols/oef_search/message.py | 6 +- .../protocols/oef_search/protocol.yaml | 6 +- packages/fetchai/protocols/tac/README.md | 4 +- packages/fetchai/protocols/tac/dialogues.py | 1 + packages/fetchai/protocols/tac/message.py | 6 +- packages/fetchai/protocols/tac/protocol.yaml | 8 +- .../fetchai/skills/aries_alice/skill.yaml | 11 +- .../fetchai/skills/aries_alice/strategy.py | 4 +- .../fetchai/skills/aries_faber/skill.yaml | 11 +- .../fetchai/skills/aries_faber/strategy.py | 4 +- .../fetchai/skills/carpark_client/skill.yaml | 13 +- .../skills/carpark_detection/database.py | 6 +- .../skills/carpark_detection/skill.yaml | 15 +- packages/fetchai/skills/echo/skill.yaml | 5 +- .../skills/erc1155_client/behaviours.py | 2 +- .../fetchai/skills/erc1155_client/handlers.py | 4 +- .../fetchai/skills/erc1155_client/skill.yaml | 23 +- .../fetchai/skills/erc1155_client/strategy.py | 4 +- .../fetchai/skills/erc1155_deploy/README.md | 2 +- .../skills/erc1155_deploy/behaviours.py | 8 +- .../fetchai/skills/erc1155_deploy/handlers.py | 11 +- .../fetchai/skills/erc1155_deploy/skill.yaml | 25 +- .../fetchai/skills/erc1155_deploy/strategy.py | 4 +- .../skills/generic_buyer/behaviours.py | 2 +- .../fetchai/skills/generic_buyer/handlers.py | 6 +- .../fetchai/skills/generic_buyer/skill.yaml | 16 +- .../fetchai/skills/generic_buyer/strategy.py | 2 +- .../skills/generic_seller/behaviours.py | 2 +- .../fetchai/skills/generic_seller/handlers.py | 2 +- .../fetchai/skills/generic_seller/skill.yaml | 16 +- .../fetchai/skills/generic_seller/strategy.py | 6 +- packages/fetchai/skills/gym/helpers.py | 2 +- packages/fetchai/skills/gym/skill.yaml | 7 +- packages/fetchai/skills/http_echo/skill.yaml | 5 +- .../skills/ml_data_provider/skill.yaml | 15 +- .../skills/ml_data_provider/strategy.py | 4 +- packages/fetchai/skills/ml_train/handlers.py | 2 +- packages/fetchai/skills/ml_train/skill.yaml | 17 +- packages/fetchai/skills/ml_train/strategy.py | 4 +- .../simple_service_registration/handlers.py | 2 +- .../simple_service_registration/skill.yaml | 9 +- .../simple_service_registration/strategy.py | 2 +- .../fetchai/skills/tac_control/behaviours.py | 8 +- packages/fetchai/skills/tac_control/game.py | 67 +- .../fetchai/skills/tac_control/handlers.py | 4 +- .../fetchai/skills/tac_control/helpers.py | 80 +- .../fetchai/skills/tac_control/parameters.py | 182 ++- .../fetchai/skills/tac_control/skill.yaml | 29 +- .../skills/tac_control_contract/README.md | 7 +- .../skills/tac_control_contract/behaviours.py | 429 ++---- .../skills/tac_control_contract/dialogues.py | 339 +++++ .../skills/tac_control_contract/game.py | 989 +----------- .../skills/tac_control_contract/handlers.py | 523 +++++-- .../skills/tac_control_contract/parameters.py | 257 +--- .../skills/tac_control_contract/skill.yaml | 79 +- .../skills/tac_negotiation/dialogues.py | 299 +++- .../skills/tac_negotiation/handlers.py | 877 ++++++----- .../fetchai/skills/tac_negotiation/skill.yaml | 31 +- .../skills/tac_negotiation/strategy.py | 113 +- .../skills/tac_negotiation/transactions.py | 149 +- .../fetchai/skills/tac_participation/game.py | 4 +- .../skills/tac_participation/skill.yaml | 11 +- .../fetchai/skills/thermometer/skill.yaml | 13 +- .../skills/thermometer_client/skill.yaml | 13 +- .../fetchai/skills/weather_client/skill.yaml | 13 +- .../dummy_weather_station_data.py | 8 +- .../fetchai/skills/weather_station/skill.yaml | 15 +- packages/hashes.csv | 139 +- scripts/check_package_dependencies.py | 24 +- scripts/check_package_versions_in_docs.py | 22 +- scripts/deploy_to_registry.py | 22 +- scripts/generate_all_protocols.py | 3 +- scripts/generate_api_docs.py | 6 +- scripts/generate_ipfs_hashes.py | 14 +- scripts/update_package_versions.py | 280 +++- scripts/whitelist.py | 24 +- setup.cfg | 6 + tests/common/pexpect_popen.py | 10 +- tests/common/utils.py | 4 +- tests/conftest.py | 8 +- tests/data/aea-config.example.yaml | 14 +- tests/data/aea-config.example_multipage.yaml | 4 - tests/data/aea-config.example_w_keys.yaml | 14 +- tests/data/dependencies_skill/skill.yaml | 3 +- tests/data/dummy_aea/aea-config.yaml | 17 +- tests/data/dummy_connection/connection.yaml | 2 +- tests/data/dummy_skill/skill.yaml | 3 +- tests/data/exception_skill/skill.yaml | 1 + tests/data/generator/t_protocol/message.py | 4 +- tests/data/generator/t_protocol/protocol.yaml | 2 +- .../generator/t_protocol_no_ct/message.py | 6 +- .../generator/t_protocol_no_ct/protocol.yaml | 2 +- tests/data/gym-connection.yaml | 4 +- tests/data/hashes.csv | 14 +- tests/test_aea.py | 47 +- tests/test_aea_builder.py | 149 +- tests/test_agent.py | 5 - tests/test_agent_loop.py | 114 +- tests/test_cli/test_add/test_connection.py | 21 +- tests/test_cli/test_add/test_contract.py | 5 +- tests/test_cli/test_add/test_protocol.py | 21 +- tests/test_cli/test_add/test_skill.py | 27 +- tests/test_cli/test_add_key.py | 4 +- tests/test_cli/test_config.py | 306 +++- tests/test_cli/test_eject.py | 14 +- tests/test_cli/test_fetch.py | 2 +- tests/test_cli/test_generate_wealth.py | 8 +- tests/test_cli/test_get_address.py | 6 +- tests/test_cli/test_get_multiaddress.py | 47 +- tests/test_cli/test_get_wealth.py | 6 +- tests/test_cli/test_install.py | 18 - tests/test_cli/test_interact.py | 16 +- tests/test_cli/test_launch.py | 4 +- tests/test_cli/test_misc.py | 12 +- tests/test_cli/test_push.py | 44 +- tests/test_cli/test_registry/test_add.py | 2 +- tests/test_cli/test_remove/test_base.py | 80 +- tests/test_cli/test_remove/test_connection.py | 6 +- .../test_cli/test_remove/test_dependencies.py | 225 +++ tests/test_cli/test_remove/test_protocol.py | 6 +- tests/test_cli/test_remove/test_skill.py | 6 +- tests/test_cli/test_run.py | 60 +- tests/test_cli/test_search.py | 9 +- tests/test_cli/test_transfer.py | 220 +++ tests/test_cli/test_upgrade.py | 562 +++++++ tests/test_cli/test_utils/test_utils.py | 50 +- tests/test_cli/tools_for_testing.py | 2 + tests/test_cli_gui/test_run_agent.py | 2 +- tests/test_configurations/test_aea_config.py | 48 +- tests/test_configurations/test_base.py | 276 +++- tests/test_configurations/test_loader.py | 14 - tests/test_configurations/test_project.py | 76 + tests/test_configurations/test_pypi.py | 40 +- tests/test_connections/test_stub.py | 8 +- tests/test_crypto/test_cosmos.py | 7 + tests/test_crypto/test_ethereum.py | 9 +- tests/test_crypto/test_fetchai.py | 9 +- tests/test_crypto/test_helpers.py | 2 +- tests/test_decision_maker/test_default.py | 4 +- tests/test_decision_maker/test_scaffold.py | 5 +- .../test_agent_vs_aea/agent_code_block.py | 3 +- .../test_agent_vs_aea/test_agent_vs_aea.py | 2 +- .../md_files/bash-aries-cloud-agent-demo.md | 24 +- .../md_files/bash-car-park-skills.md | 32 +- .../md_files/bash-cli-vs-programmatic-aeas.md | 2 +- .../test_bash_yaml/md_files/bash-config.md | 8 +- .../md_files/bash-erc1155-skills.md | 36 +- .../bash-generic-skills-step-by-step.md | 52 +- .../md_files/bash-generic-skills.md | 32 +- .../test_bash_yaml/md_files/bash-gym-skill.md | 6 +- .../bash-http-connection-and-skill.md | 6 +- .../test_bash_yaml/md_files/bash-logging.md | 8 +- .../test_bash_yaml/md_files/bash-ml-skills.md | 32 +- .../md_files/bash-orm-integration.md | 34 +- .../md_files/bash-p2p-connection.md | 16 +- .../md_files/bash-package-imports.md | 2 +- .../md_files/bash-quickstart.md | 14 +- .../md_files/bash-skill-guide.md | 16 +- .../test_bash_yaml/md_files/bash-skill.md | 2 +- .../md_files/bash-tac-skills-contract.md | 47 +- .../md_files/bash-tac-skills.md | 64 +- .../md_files/bash-thermometer-skills.md | 34 +- .../md_files/bash-weather-skills.md | 32 +- .../fetchai_private_key.txt | 1 + .../programmatic_aea.py | 2 +- .../test_programmatic_aea.py | 5 +- .../programmatic_aea.py | 6 +- .../test_cli_vs_programmatic_aea.py | 12 +- tests/test_docs/test_docs_protocol.py | 4 +- .../multiplexer_standalone.py | 2 +- .../test_multiplexer_standalone.py | 2 +- .../test_orm_integration.py | 59 +- .../test_skill_guide/test_skill_guide.py | 28 +- tests/test_helpers/test_async_utils.py | 202 ++- tests/test_helpers/test_base.py | 123 +- tests/test_helpers/test_install_dependency.py | 49 + tests/test_helpers/test_logging.py | 11 +- tests/test_helpers/test_multiaddr.py | 16 + tests/test_helpers/test_search/test_models.py | 20 +- tests/test_helpers/test_yaml_utils.py | 132 ++ tests/test_launcher.py | 1 - tests/test_mail/test_base.py | 6 +- tests/test_manager.py | 323 ++++ tests/test_multiplexer.py | 170 ++- tests/test_package_loading.py | 2 +- .../test_http_server/test_http_server.py | 2 +- .../test_http_server_and_client.py | 2 +- .../test_ledger/test_contract_api.py | 20 +- .../test_p2p_libp2p/test_aea_cli.py | 10 +- .../test_p2p_libp2p/test_errors.py | 17 + .../test_p2p_libp2p/test_public_dht.py | 34 +- .../test_p2p_libp2p_client/test_aea_cli.py | 8 +- .../test_connections/test_soef/models.py | 14 +- .../test_connections/test_soef/test_soef.py | 14 +- .../test_soef/test_soef_integration.py | 61 +- .../test_connections/test_tcp/test_base.py | 2 +- .../test_webhook/test_webhook.py | 2 +- .../test_protocols/test_contract_api.py | 2 +- .../test_packages/test_protocols/test_fipa.py | 4 +- .../test_packages/test_protocols/test_gym.py | 2 +- .../test_packages/test_protocols/test_http.py | 4 +- .../test_protocols/test_ledger_api.py | 2 +- .../test_protocols/test_ml_trade.py | 2 +- .../test_protocols/test_oef_search.py | 2 +- .../test_packages/test_protocols/test_tac.py | 2 +- .../test_generic_buyer/__init__.py | 20 + .../test_generic_buyer/test_behaviours.py | 118 ++ .../test_generic_buyer/test_dialogues.py | 219 +++ .../test_generic_buyer/test_handlers.py | 1337 +++++++++++++++++ .../test_generic_buyer/test_models.py | 210 +++ .../test_generic_seller/__init__.py | 20 + .../test_generic_seller/test_behaviours.py | 215 +++ .../test_generic_seller/test_dialogues.py | 162 ++ .../test_generic_seller/test_handlers.py | 979 ++++++++++++ .../test_generic_seller/test_models.py | 187 +++ .../test_skills_integration/__init__.py | 20 + .../test_carpark.py | 90 +- .../test_echo.py | 2 +- .../test_erc1155.py | 50 +- .../test_generic.py | 90 +- .../test_gym.py | 8 +- .../test_http_echo.py | 6 +- .../test_ml_skills.py | 90 +- .../test_tac.py | 331 ++-- .../test_thermometer.py | 90 +- .../test_weather.py | 94 +- tests/test_protocols/test_default.py | 8 +- .../test_protocols/test_dialogue/test_base.py | 61 +- .../test_generator/test_common.py | 16 + .../test_generator/test_end_to_end.py | 12 +- tests/test_protocols/test_state_update.py | 2 +- tests/test_registries/test_base.py | 44 +- tests/test_registries/test_filter.py | 13 +- tests/test_runner.py | 2 +- tests/test_runtime.py | 78 +- tests/test_skills/test_base.py | 2 +- .../{test_testcases.py => test_test_cases.py} | 88 +- tests/test_test_tools/test_test_skill.py | 596 ++++++++ tox.ini | 2 +- 529 files changed, 20290 insertions(+), 6494 deletions(-) create mode 100644 aea/cli/transfer.py create mode 100644 aea/cli/upgrade.py create mode 100644 aea/configurations/project.py create mode 100644 aea/configurations/schemas/configurable_parts/base-custom_config.json create mode 100644 aea/configurations/schemas/configurable_parts/connection-custom_config.json create mode 100644 aea/configurations/schemas/configurable_parts/skill-custom_config.json create mode 100644 aea/helpers/install_dependency.py create mode 100644 aea/helpers/yaml_utils.py create mode 100644 aea/manager.py create mode 100644 aea/test_tools/test_skill.py create mode 100644 docs/api/configurations/project.md create mode 100644 docs/api/helpers/yaml_utils.md create mode 100644 docs/api/manager.md rename docs/api/{helpers => test_tools}/test_cases.md (96%) create mode 100644 docs/api/test_tools/test_skill.md create mode 100644 docs/assets/acn-tiers.png create mode 100644 docs/assets/acn-trust-security.png create mode 100644 docs/assets/dht.png create mode 100644 docs/debug.md create mode 100644 docs/multi-agent-manager.md create mode 100644 docs/skill-testing.md create mode 100644 fetchai_private_key.txt create mode 100644 packages/fetchai/agents/aries_alice/README.md create mode 100644 packages/fetchai/agents/aries_faber/README.md create mode 100644 packages/fetchai/agents/car_data_buyer/README.md create mode 100644 packages/fetchai/agents/car_detector/README.md create mode 100644 packages/fetchai/agents/erc1155_client/README.md create mode 100644 packages/fetchai/agents/erc1155_deployer/README.md create mode 100644 packages/fetchai/agents/generic_buyer/README.md create mode 100644 packages/fetchai/agents/generic_seller/README.md create mode 100644 packages/fetchai/agents/gym_aea/README.md create mode 100644 packages/fetchai/agents/ml_data_provider/README.md create mode 100644 packages/fetchai/agents/ml_model_trainer/README.md create mode 100644 packages/fetchai/agents/simple_service_registration/README.md create mode 100644 packages/fetchai/agents/tac_controller/README.md create mode 100644 packages/fetchai/agents/tac_controller_contract/README.md create mode 100644 packages/fetchai/agents/tac_participant/README.md create mode 100644 packages/fetchai/agents/tac_participant_contract/README.md create mode 100644 packages/fetchai/agents/tac_participant_contract/aea-config.yaml create mode 100644 packages/fetchai/agents/thermometer_aea/README.md create mode 100644 packages/fetchai/agents/thermometer_client/README.md create mode 100644 packages/fetchai/agents/weather_client/README.md create mode 100644 packages/fetchai/agents/weather_station/README.md create mode 100644 packages/fetchai/skills/tac_control_contract/dialogues.py create mode 100644 tests/test_cli/test_remove/test_dependencies.py create mode 100644 tests/test_cli/test_transfer.py create mode 100644 tests/test_cli/test_upgrade.py create mode 100644 tests/test_configurations/test_project.py create mode 100644 tests/test_docs/test_build_aea_programmatically/fetchai_private_key.txt create mode 100644 tests/test_helpers/test_install_dependency.py create mode 100644 tests/test_helpers/test_yaml_utils.py create mode 100644 tests/test_manager.py create mode 100644 tests/test_packages/test_skills/test_generic_buyer/__init__.py create mode 100644 tests/test_packages/test_skills/test_generic_buyer/test_behaviours.py create mode 100644 tests/test_packages/test_skills/test_generic_buyer/test_dialogues.py create mode 100644 tests/test_packages/test_skills/test_generic_buyer/test_handlers.py create mode 100644 tests/test_packages/test_skills/test_generic_buyer/test_models.py create mode 100644 tests/test_packages/test_skills/test_generic_seller/__init__.py create mode 100644 tests/test_packages/test_skills/test_generic_seller/test_behaviours.py create mode 100644 tests/test_packages/test_skills/test_generic_seller/test_dialogues.py create mode 100644 tests/test_packages/test_skills/test_generic_seller/test_handlers.py create mode 100644 tests/test_packages/test_skills/test_generic_seller/test_models.py create mode 100644 tests/test_packages/test_skills_integration/__init__.py rename tests/test_packages/{test_skills => test_skills_integration}/test_carpark.py (83%) rename tests/test_packages/{test_skills => test_skills_integration}/test_echo.py (98%) rename tests/test_packages/{test_skills => test_skills_integration}/test_erc1155.py (86%) rename tests/test_packages/{test_skills => test_skills_integration}/test_generic.py (84%) rename tests/test_packages/{test_skills => test_skills_integration}/test_gym.py (91%) rename tests/test_packages/{test_skills => test_skills_integration}/test_http_echo.py (95%) rename tests/test_packages/{test_skills => test_skills_integration}/test_ml_skills.py (83%) rename tests/test_packages/{test_skills => test_skills_integration}/test_tac.py (52%) rename tests/test_packages/{test_skills => test_skills_integration}/test_thermometer.py (84%) rename tests/test_packages/{test_skills => test_skills_integration}/test_weather.py (83%) rename tests/test_test_tools/{test_testcases.py => test_test_cases.py} (69%) create mode 100644 tests/test_test_tools/test_test_skill.py diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 4d48e1f1ed..f6673d3a1e 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -299,7 +299,7 @@ jobs: pip install tox sudo apt-get install -y protobuf-compiler - name: Run all tests - run: tox -e py3.7-cov -- --ignore=tests/test_docs --ignore=tests/test_examples --ignore=tests/test_packages/test_contracts --ignore=tests/test_packages/test_skills -m 'not unstable' + run: tox -e py3.7-cov -- --ignore=tests/test_docs --ignore=tests/test_examples --ignore=tests/test_packages/test_contracts --ignore=tests/test_packages/test_skills_integration -m 'not unstable' continue-on-error: true - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 diff --git a/.pylintrc b/.pylintrc index 9b2784db56..83401493fb 100644 --- a/.pylintrc +++ b/.pylintrc @@ -2,22 +2,19 @@ ignore-patterns=serialization.py,message.py,__main__.py,.*_pb2.py [MESSAGES CONTROL] -disable=C0103,C0201,C0301,C0302,C0330,W0105,W0107,W0707,W1202,W1203,R0902,R0913,R0914,R0801,R0904,R0903,R0911,R0912,R0901,R0916,R1702,R0915,R1725 +disable=C0103,C0201,C0301,C0302,C0330,W0105,W0107,W0707,W1202,W1203,R0902,R0913,R0914,R0801,R0911,R0912,R0901,R0916,R1702,R0915 ## Eventually resolve these: # W0707: raise-missing-from # R0902: too-many-instance-attributes # R0913: too-many-arguments # R0914: too-many-locals -# R0904: too-many-public-methods -# R0903: too-few-public-methods # R0911: too-many-return-statements # R0912: too-many-branches # R0901: too-many-ancestors # R0916: too-many-boolean-expressions # R1702: too-many-nested-blocks # R0915: too-many-statements -# R1725: super-with-arguments # decide on a logging policy: # W1202: logging-format-interpolation # W1203: logging-fstring-interpolation @@ -34,3 +31,7 @@ disable=C0103,C0201,C0301,C0302,C0330,W0105,W0107,W0707,W1202,W1203,R0902,R0913, [IMPORTS] ignored-modules=aiohttp,defusedxml,gym,fetch,matplotlib,memory_profiler,numpy,oef,openapi_core,psutil,tensorflow,temper,skimage,vyper,web3 + +[DESIGN] +min-public-methods=1 +max-public-methods=35 diff --git a/HISTORY.md b/HISTORY.md index 9668f9fbd4..4bc703799b 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,42 @@ # Release History +## 0.6.3 (2020-10-16) + +- Adds skill testing tools and documentation +- Adds human readable log output regarding configuration for p2p_libp2p connection +- Adds support to install PyPI dependencies from AEABuilder and MultiAgentManager +- Adds CLI upgrade command to upgrade entire agent project and components +- Extends CLI remove command to include option to remove dependencies +- Extends SOEF chain identifier support +- Adds CLI transfer command to transfer wealth +- Adds integration tests for skills generic buyer and seller using skill testing tool +- Adds validation of component configurations when setting componenet configuration overrides +- Multiple refactoring of internal configuration and helper objects and methods +- Fix a bug on CLI push local with latest rather than version specifier +- Adds readmes in all agent projects +- Adds agent name in logger paths of runnable objects +- Fixes tac skills to work with and without erc1155 contract +- Adds additional validations on message flow +- Multiple docs updates based on user feedback +- Multiple additional tests and test stability fixes + +## 0.6.2 (2020-10-01) + +- Adds MultiAgentManager to manage multiple agent projects programmatically +- Improves SOEF connection reliability on unregister +- Extends configuration classes to handle overriding configurations programmatically +- Improves configuration schemas and validations +- Fixes Multiplexer termination errors +- Allow finer-grained override of component configurations from aea-config +- Fixes tac controller to work with Ethereum contracts again +- Fixes multiple deploy and development scripts +- Introduces isort to development dependencies for automated import sorting +- Adds reset password command to CLI +- Adds support for abbreviated public ids (latest) to CLI and configurations +- Adds additional docstring linters for improved api documentation checks +- Multiple docs updates including additional explanations of ACN architecture +- Multiple additional tests and test stability fixes + ## 0.6.1 (2020-09-17) - Adds a standalone script to deploy an ACN node diff --git a/Makefile b/Makefile index 6ffffecb1a..054e05cfd4 100644 --- a/Makefile +++ b/Makefile @@ -78,7 +78,7 @@ common_checks: security misc_checks lint static docs .PHONY: test test: - pytest -rfE --doctest-modules aea packages/fetchai/protocols packages/fetchai/connections tests/ --cov-report=html --cov-report=xml --cov-report=term-missing --cov-report=term --cov=aea --cov=packages/fetchai/protocols --cov=packages/fetchai/connections --cov-config=.coveragerc + pytest -rfE --doctest-modules aea packages/fetchai/protocols packages/fetchai/connections packages/fetchai/skills/generic_buyer tests/ --cov-report=html --cov-report=xml --cov-report=term-missing --cov-report=term --cov=aea --cov=packages/fetchai/protocols --cov=packages/fetchai/connections --cov=packages/fetchai/skills/generic_buyer --cov-config=.coveragerc find . -name ".coverage*" -not -name ".coveragerc" -exec rm -fr "{}" \; .PHONY: test-sub diff --git a/aea/__version__.py b/aea/__version__.py index 254b018066..035180108f 100644 --- a/aea/__version__.py +++ b/aea/__version__.py @@ -22,7 +22,7 @@ __title__ = "aea" __description__ = "Autonomous Economic Agent framework" __url__ = "https://github.com/fetchai/agents-aea.git" -__version__ = "0.6.1" +__version__ = "0.6.3" __author__ = "Fetch.AI Limited" __license__ = "Apache-2.0" __copyright__ = "2019 Fetch.AI Limited" diff --git a/aea/aea.py b/aea/aea.py index bb3ff4c5e2..529e86f2ab 100644 --- a/aea/aea.py +++ b/aea/aea.py @@ -19,8 +19,8 @@ """This module contains the implementation of an autonomous economic agent (AEA).""" import datetime -import logging from asyncio import AbstractEventLoop +from logging import Logger from multiprocessing.pool import AsyncResult from typing import ( Any, @@ -48,18 +48,19 @@ ) from aea.exceptions import AEAException from aea.helpers.exception_policy import ExceptionPolicyEnum -from aea.helpers.logging import AgentLoggerAdapter, WithLogger +from aea.helpers.logging import AgentLoggerAdapter, get_logger from aea.identity.base import Identity from aea.mail.base import Envelope from aea.protocols.base import Message from aea.protocols.default.message import DefaultMessage from aea.registries.filter import Filter from aea.registries.resources import Resources +from aea.runtime import _StopRuntime from aea.skills.base import Behaviour, Handler from aea.skills.error.handlers import ErrorHandler -class AEA(Agent, WithLogger): +class AEA(Agent): """This class implements an autonomous economic agent.""" RUN_LOOPS: Dict[str, Type[BaseAgentLoop]] = { @@ -98,7 +99,7 @@ def __init__( :param resources: the resources (protocols and skills) of the agent. :param loop: the event loop to run the connections. :param period: period to call agent's act - :param exeution_timeout: amount of time to limit single act/handle to execute. + :param execution_timeout: amount of time to limit single act/handle to execute. :param max_reactions: the processing rate of envelopes per tick (i.e. single loop). :param decision_maker_handler_class: the class implementing the decision maker handler to be used. :param skill_exception_policy: the skill exception policy enum @@ -116,6 +117,10 @@ def __init__( self._skills_exception_policy = skill_exception_policy self._connection_exception_policy = connection_exception_policy + aea_logger = AgentLoggerAdapter( + logger=get_logger(__name__, identity.name), agent_name=identity.name, + ) + super().__init__( identity=identity, connections=[], @@ -123,13 +128,9 @@ def __init__( period=period, loop_mode=loop_mode, runtime_mode=runtime_mode, + logger=cast(Logger, aea_logger), ) - aea_logger = AgentLoggerAdapter( - logger=logging.getLogger(__name__), agent_name=identity.name - ) - WithLogger.__init__(self, logger=cast(logging.Logger, aea_logger)) - self.max_reactions = max_reactions decision_maker_handler = decision_maker_handler_class( identity=identity, wallet=wallet @@ -241,8 +242,8 @@ def _get_msg_and_handlers_for_envelope( if error_handler is None: self.logger.warning("ErrorHandler not initialized. Stopping AEA!") - self.stop() - return None, [] + raise _StopRuntime() + error_handler = cast(ErrorHandler, error_handler) if protocol is None: @@ -341,7 +342,7 @@ def get_message_handlers(self) -> List[Tuple[Callable[[Any], None], Callable]]: :return: List of tuples of callables: handler and coroutine to get a message """ - return super(AEA, self).get_message_handlers() + [ + return super().get_message_handlers() + [ (self.filter.handle_internal_message, self.filter.get_internal_message,), ] @@ -363,9 +364,10 @@ def log_exception(e, fn): if self._skills_exception_policy == ExceptionPolicyEnum.stop_and_exit: log_exception(exception, function) - self.stop() - raise AEAException( - f"AEA was terminated cause exception `{exception}` in skills {function}! Please check logs." + raise _StopRuntime( + AEAException( + f"AEA was terminated cause exception `{exception}` in skills {function}! Please check logs." + ) ) if self._skills_exception_policy == ExceptionPolicyEnum.just_log: @@ -386,7 +388,7 @@ def teardown(self) -> None: :return: None """ - self.logger.debug("[{}]: Calling teardown method...".format(self.name)) + self.logger.debug("Calling teardown method...") self.resources.teardown() def get_task_result(self, task_id: int) -> AsyncResult: diff --git a/aea/aea_builder.py b/aea/aea_builder.py index a3570bbdef..40ab4c20fe 100644 --- a/aea/aea_builder.py +++ b/aea/aea_builder.py @@ -17,6 +17,7 @@ # # ------------------------------------------------------------------------------ + """This module contains utilities for building an AEA.""" import itertools @@ -24,22 +25,10 @@ import logging.config import os import pprint -from collections import defaultdict, deque +from collections import defaultdict from copy import copy, deepcopy from pathlib import Path -from typing import ( - Any, - Collection, - Deque, - Dict, - List, - Optional, - Set, - Tuple, - Type, - Union, - cast, -) +from typing import Any, Collection, Dict, List, Optional, Set, Tuple, Type, Union, cast import jsonschema from packaging.specifiers import SpecifierSet @@ -77,16 +66,18 @@ DecisionMakerHandler as DefaultDecisionMakerHandler, ) from aea.exceptions import AEAException -from aea.helpers.base import load_module +from aea.helpers.base import find_topological_order, load_env_file, load_module from aea.helpers.exception_policy import ExceptionPolicyEnum -from aea.helpers.logging import AgentLoggerAdapter +from aea.helpers.install_dependency import install_dependency +from aea.helpers.logging import AgentLoggerAdapter, WithLogger, get_logger from aea.identity.base import Identity from aea.registries.resources import Resources PathLike = Union[os.PathLike, Path, str] -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) +DEFAULT_ENV_DOTFILE = ".env" class _DependenciesManager: @@ -231,8 +222,13 @@ def pypi_dependencies(self) -> Dependencies: ) return all_pypi_dependencies + def install_dependencies(self) -> None: + """Install extra dependencies for components.""" + for name, d in self.pypi_dependencies.items(): + install_dependency(name, d) + -class AEABuilder: +class AEABuilder(WithLogger): # pylint: disable=too-many-public-methods """ This class helps to build an AEA. @@ -292,6 +288,8 @@ class AEABuilder: DEFAULT_RUNTIME_MODE = "threaded" DEFAULT_SEARCH_SERVICE_ADDRESS = "fetchai/soef:*" + loader = ConfigLoader.from_configuration_type(PackageType.AGENT) + # pylint: disable=attribute-defined-outside-init def __init__(self, with_default_packages: bool = True): @@ -300,6 +298,7 @@ def __init__(self, with_default_packages: bool = True): :param with_default_packages: add the default packages. """ + WithLogger.__init__(self, logger=_default_logger) self._with_default_packages = with_default_packages self._reset(is_full_reset=True) @@ -420,7 +419,7 @@ def set_decision_maker_handler( _class = getattr(module, class_name) self._decision_maker_handler_class = _class except Exception as e: # pragma: nocover - logger.error( + self.logger.error( "Could not locate decision maker handler for dotted path '{}', class name '{}' and file path '{}'. Error message: {}".format( dotted_path, class_name, file_path, e ) @@ -850,6 +849,10 @@ def _process_connection_ids( return sorted_selected_connections_ids + def install_pypi_dependencies(self) -> None: + """Install components extra dependecies.""" + self._package_dependency_manager.install_dependencies() + def build(self, connection_ids: Optional[Collection[PublicId]] = None,) -> AEA: """ Build the AEA. @@ -866,11 +869,11 @@ def build(self, connection_ids: Optional[Collection[PublicId]] = None,) -> AEA: :raises ValueError: if we cannot """ self._check_we_can_build() - resources = Resources() wallet = Wallet( copy(self.private_key_paths), copy(self.connection_private_key_paths) ) identity = self._build_identity_from_wallet(wallet) + resources = Resources(identity.name) self._load_and_add_components(ComponentType.PROTOCOL, resources, identity.name) self._load_and_add_components(ComponentType.CONTRACT, resources, identity.name) self._load_and_add_components( @@ -1080,10 +1083,10 @@ def _check_pypi_dependencies(self, configuration: ComponentConfiguration): all_pypi_dependencies, configuration.pypi_dependencies ) for pkg_name, dep_info in all_pypi_dependencies.items(): - set_specifier = SpecifierSet(dep_info.get("version", "")) + set_specifier = SpecifierSet(dep_info.version) if not is_satisfiable(set_specifier): raise AEAException( - f"Conflict on package {pkg_name}: specifier set '{dep_info['version']}' not satisfiable." + f"Conflict on package {pkg_name}: specifier set '{dep_info.version}' not satisfiable." ) @staticmethod @@ -1264,12 +1267,10 @@ def _find_import_order( - detect if there are cycles - import skills from the leaves of the dependency graph, by finding a topological ordering. """ - # the adjacency list for the dependency graph - depends_on: Dict[ComponentId, Set[ComponentId]] = defaultdict(set) # the adjacency list for the inverse dependency graph - supports: Dict[ComponentId, Set[ComponentId]] = defaultdict(set) - # nodes with no incoming edges - roots = copy(skill_ids) + dependency_to_supported_dependencies: Dict[ + ComponentId, Set[ComponentId] + ] = defaultdict(set) for skill_id in skill_ids: component_path = self._find_component_directory_from_component_id( aea_project_path, skill_id @@ -1281,31 +1282,16 @@ def _find_import_order( ), ) - if len(configuration.skills) != 0: - roots.remove(skill_id) - - depends_on[skill_id].update( - [ - ComponentId(ComponentType.SKILL, skill) - for skill in configuration.skills - ] - ) + if skill_id not in dependency_to_supported_dependencies: + dependency_to_supported_dependencies[skill_id] = set() for dependency in configuration.skills: - supports[ComponentId(ComponentType.SKILL, dependency)].add(skill_id) - - # find topological order (Kahn's algorithm) - queue: Deque[ComponentId] = deque() - order = [] - queue.extend(roots) - while len(queue) > 0: - current = queue.pop() - order.append(current) - for node in supports[current]: # pragma: nocover - depends_on[node].discard(current) - if len(depends_on[node]) == 0: - queue.append(node) - - if any(len(edges) > 0 for edges in depends_on.values()): + dependency_to_supported_dependencies[ + ComponentId(ComponentType.SKILL, dependency) + ].add(skill_id) + + try: + order = find_topological_order(dependency_to_supported_dependencies) + except ValueError: raise AEAException("Cannot load skills, there is a cyclic dependency.") return order @@ -1335,17 +1321,49 @@ def from_aea_project( ) builder = AEABuilder(with_default_packages=False) + load_env_file(str(aea_project_path / DEFAULT_ENV_DOTFILE)) + # load agent configuration file - configuration_file = aea_project_path / DEFAULT_AEA_CONFIG_FILE + configuration_file = cls.get_configuration_file_path(aea_project_path) + agent_configuration = cls.loader.load(configuration_file.open()) - loader = ConfigLoader.from_configuration_type(PackageType.AGENT) - agent_configuration = loader.load(configuration_file.open()) + builder.set_from_configuration( + agent_configuration, aea_project_path, skip_consistency_check + ) + return builder + + @classmethod + def from_config_json( + cls, + json_data: List[Dict], + aea_project_path: PathLike, + skip_consistency_check: bool = False, + ) -> "AEABuilder": + """ + Load agent configuration for alreaady provided json data. + + :param json_data: list of dicts with agent configuration + :param aea_project_path: path to project root + :param skip_consistency_check: skip consistency check on configs load. + + :return: AEABuilder instance + """ + aea_project_path = Path(aea_project_path) + builder = AEABuilder(with_default_packages=False) + + # load agent configuration file + agent_configuration = cls.loader.load_agent_config_from_json(json_data) builder.set_from_configuration( agent_configuration, aea_project_path, skip_consistency_check ) return builder + @staticmethod + def get_configuration_file_path(aea_project_path: Union[Path, str]) -> Path: + """Return path to aea-config file for the given aea project path.""" + return Path(aea_project_path) / DEFAULT_AEA_CONFIG_FILE + def _load_and_add_components( self, component_type: ComponentType, @@ -1365,26 +1383,20 @@ def _load_and_add_components( for configuration in self._package_dependency_manager.get_components_by_type( component_type ).values(): - if configuration.is_abstract_component: - load_aea_package(configuration) - continue - if configuration in self._component_instances[component_type].keys(): component = self._component_instances[component_type][configuration] if configuration.component_type != ComponentType.SKILL: component.logger = cast( - logging.Logger, make_logger(configuration, agent_name) + logging.Logger, make_component_logger(configuration, agent_name) ) else: - configuration = deepcopy(configuration) - configuration.update( - self._custom_component_configurations.get( - configuration.component_id, {} - ) - ) - _logger = make_logger(configuration, agent_name) + new_configuration = self._overwrite_custom_configuration(configuration) + if new_configuration.is_abstract_component: + load_aea_package(configuration) + continue + _logger = make_component_logger(new_configuration, agent_name) component = load_component_from_config( - configuration, logger=_logger, **kwargs + new_configuration, logger=_logger, **kwargs ) resources.add_component(component) @@ -1398,8 +1410,25 @@ def _check_we_can_build(self): "Please call 'reset() if you want to build another agent." ) + def _overwrite_custom_configuration(self, configuration: ComponentConfiguration): + """ + Overwrite custom configurations. + + It deep-copies the configuration, to avoid undesired side-effects. + + :param configuration: the configuration object. + :param custom_config: the configurations to apply. + :return: the new configuration instance. + """ + new_configuration = deepcopy(configuration) + custom_config = self._custom_component_configurations.get( + new_configuration.component_id, {} + ) + new_configuration.update(custom_config) + return new_configuration + -def make_logger( +def make_component_logger( configuration: ComponentConfiguration, agent_name: str, ) -> Optional[logging.Logger]: """ @@ -1413,5 +1442,5 @@ def make_logger( # skip because skill object already have their own logger from the skill context. return None logger_name = f"aea.packages.{configuration.author}.{configuration.component_type.to_plural()}.{configuration.name}" - _logger = AgentLoggerAdapter(logging.getLogger(logger_name), agent_name) + _logger = AgentLoggerAdapter(get_logger(logger_name, agent_name), agent_name) return cast(logging.Logger, _logger) diff --git a/aea/agent.py b/aea/agent.py index b62acaadf6..f3b66a2d7e 100644 --- a/aea/agent.py +++ b/aea/agent.py @@ -16,24 +16,28 @@ # limitations under the License. # # ------------------------------------------------------------------------------ + """This module contains the implementation of a generic agent.""" import datetime import logging from asyncio import AbstractEventLoop +from logging import Logger from typing import Any, Callable, Dict, List, Optional, Tuple, Type from aea.abstract_agent import AbstractAgent from aea.connections.base import Connection +from aea.exceptions import AEAException +from aea.helpers.logging import WithLogger from aea.identity.base import Identity from aea.mail.base import Envelope from aea.multiplexer import InBox, OutBox from aea.runtime import AsyncRuntime, BaseRuntime, RuntimeStates, ThreadedRuntime -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) -class Agent(AbstractAgent): +class Agent(AbstractAgent, WithLogger): """This class provides an abstract base class for a generic agent.""" RUNTIMES: Dict[str, Type[BaseRuntime]] = { @@ -50,6 +54,7 @@ def __init__( period: float = 1.0, loop_mode: Optional[str] = None, runtime_mode: Optional[str] = None, + logger: Logger = _default_logger, ) -> None: """ Instantiate the agent. @@ -63,6 +68,7 @@ def __init__( :return: None """ + WithLogger.__init__(self, logger=logger) self._connections = connections self._identity = identity self._period = period @@ -191,7 +197,12 @@ def start(self) -> None: :return: None """ - self.runtime.start() + was_started = self.runtime.start() + + if was_started: + self.runtime.wait_completed(sync=True) + else: #  pragma: nocover + raise AEAException("Failed to start runtime! Was it already started?") def stop(self) -> None: """ @@ -206,6 +217,7 @@ def stop(self) -> None: :return: None """ self.runtime.stop() + self.runtime.wait_completed(sync=True) @property def state(self) -> RuntimeStates: @@ -245,7 +257,7 @@ def exception_handler( :return: bool, propagate exception if True otherwise skip it. """ - logger.exception( + self.logger.exception( f"Exception {repr(exception)} raised during {repr(function)} call." ) return True diff --git a/aea/agent_loop.py b/aea/agent_loop.py index 59fff7c62d..4d6551597e 100644 --- a/aea/agent_loop.py +++ b/aea/agent_loop.py @@ -16,14 +16,16 @@ # limitations under the License. # # ------------------------------------------------------------------------------ + + """This module contains the implementation of an agent loop using asyncio.""" import asyncio import datetime -import logging from abc import ABC, abstractmethod from asyncio import CancelledError from asyncio.events import AbstractEventLoop from asyncio.tasks import Task +from contextlib import suppress from enum import Enum from functools import partial from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple @@ -34,31 +36,48 @@ AsyncState, HandlerItemGetter, PeriodicCaller, - ensure_loop, + Runnable, ) from aea.helpers.exec_timeout import ExecTimeoutThreadGuard, TimeoutException -from aea.helpers.logging import WithLogger +from aea.helpers.logging import WithLogger, get_logger + + +class AgentLoopException(AEAException): + """Exception for agent loop runtime errors.""" -logger = logging.getLogger(__name__) +class AgentLoopStates(Enum): + """Internal agent loop states.""" + + initial = None + started = "started" + starting = "starting" + stopped = "stopped" + stopping = "stopping" + error = "error" -class BaseAgentLoop(WithLogger, ABC): +class BaseAgentLoop(Runnable, WithLogger, ABC): """Base abstract agent loop class.""" def __init__( - self, agent: AbstractAgent, loop: Optional[AbstractEventLoop] = None + self, + agent: AbstractAgent, + loop: Optional[AbstractEventLoop] = None, + threaded=False, ) -> None: """Init loop. :params agent: Agent or AEA to run. :params loop: optional asyncio event loop. if not specified a new loop will be created. """ + logger = get_logger(__name__, agent.name) WithLogger.__init__(self, logger) + Runnable.__init__(self, loop=loop, threaded=threaded) + self._agent: AbstractAgent = agent - self.set_loop(ensure_loop(loop)) self._tasks: List[asyncio.Task] = [] - self._state: AsyncState = AsyncState() + self._state: AsyncState = AsyncState(AgentLoopStates.initial) self._exceptions: List[Exception] = [] @property @@ -70,31 +89,38 @@ def set_loop(self, loop: AbstractEventLoop) -> None: """Set event loop and all event loopp related objects.""" self._loop: AbstractEventLoop = loop - def start(self) -> None: - """Start agent loop synchronously in own asyncio loop.""" - self.setup() - self._loop.run_until_complete(self.run_loop()) - - def setup(self) -> None: # pylint: disable=no-self-use + def _setup(self) -> None: # pylint: disable=no-self-use """Set up loop before started.""" # start and stop methods are classmethods cause one instance shared across muiltiple threads ExecTimeoutThreadGuard.start() - def teardown(self): # pylint: disable=no-self-use + def _teardown(self): # pylint: disable=no-self-use """Tear down loop on stop.""" # start and stop methods are classmethods cause one instance shared across muiltiple threads ExecTimeoutThreadGuard.stop() - async def run_loop(self) -> None: + async def run(self) -> None: """Run agent loop.""" self.logger.debug("agent loop started") + self._state.set(AgentLoopStates.starting) + self._setup() self._set_tasks() try: await self._gather_tasks() except (CancelledError, KeyboardInterrupt): - await self.wait_run_loop_stopped() - logger.debug("agent loop stopped") + pass + finally: + await self._stop() + + async def _stop(self) -> None: + """Stop and cleanup.""" + self._teardown() + self._stop_tasks() + for t in self._tasks: + with suppress(BaseException): + await t self._state.set(AgentLoopStates.stopped) + self.logger.debug("agent loop stopped") async def _gather_tasks(self) -> None: """Wait till first task exception.""" @@ -105,27 +131,6 @@ def _set_tasks(self) -> None: # pragma: nocover """Set run loop tasks.""" raise NotImplementedError - async def wait_run_loop_stopped(self) -> None: - """Wait all tasks stopped.""" - return await asyncio.gather( - *self._tasks, loop=self._loop, return_exceptions=True - ) - - def stop(self) -> None: - """Stop agent loop.""" - self.teardown() - self._state.set(AgentLoopStates.stopping) - logger.debug("agent loop stopping!") - if self._loop.is_running(): - self._loop.call_soon_threadsafe(self._stop_tasks) - else: - - async def stop(): - self._stop_tasks() - await self.wait_run_loop_stopped() - - self._loop.run_until_complete(stop()) - def _stop_tasks(self) -> None: """Cancel all tasks.""" for task in self._tasks: @@ -133,39 +138,32 @@ def _stop_tasks(self) -> None: continue #  pragma: nocover task.cancel() + @property + def state(self) -> AgentLoopStates: + """Get current main loop state.""" + return self._state.get() + @property def is_running(self) -> bool: """Get running state of the loop.""" return self._state.get() == AgentLoopStates.started -class AgentLoopException(AEAException): - """Exception for agent loop runtime errors.""" - - -class AgentLoopStates(Enum): - """Internal agent loop states.""" - - initial = None - started = "started" - stopped = "stopped" - stopping = "stopping" - error = "error" - - class AsyncAgentLoop(BaseAgentLoop): """Asyncio based agent loop suitable only for AEA.""" NEW_BEHAVIOURS_PROCESS_SLEEP = 1 # check new behaviours registered every second. - def __init__(self, agent: AbstractAgent, loop: AbstractEventLoop = None): + def __init__( + self, agent: AbstractAgent, loop: AbstractEventLoop = None, threaded=False + ): """ Init agent loop. :param agent: AEA instance :param loop: asyncio loop to use. optional """ - super().__init__(agent=agent, loop=loop) + super().__init__(agent=agent, loop=loop, threaded=threaded) self._agent: AbstractAgent = self._agent self._periodic_tasks: Dict[Callable, PeriodicCaller] = {} @@ -208,7 +206,7 @@ def _execution_control( try: with ExecTimeoutThreadGuard(execution_timeout): return fn(*(args or []), **(kwargs or {})) - except TimeoutException: #  pragma: nocover + except TimeoutException: # pragma: nocover self.logger.warning( "`{}` was terminated as its execution exceeded the timeout of {} seconds. Please refactor your code!".format( fn, execution_timeout diff --git a/aea/cli/add.py b/aea/cli/add.py index 093a881751..9cd30a0861 100644 --- a/aea/cli/add.py +++ b/aea/cli/add.py @@ -32,6 +32,7 @@ copy_package_directory, find_item_in_distribution, find_item_locally, + get_item_id_present, get_package_path, is_fingerprint_correct, is_item_present, @@ -102,9 +103,10 @@ def add_item(ctx: Context, item_type: str, item_public_id: PublicId) -> None: ) ) if is_item_present(ctx, item_type, item_public_id): + present_item_id = get_item_id_present(ctx, item_type, item_public_id) raise click.ClickException( - "A {} with id '{}/{}' already exists. Aborting...".format( - item_type, item_public_id.author, item_public_id.name + "A {} with id '{}' already exists. Aborting...".format( + item_type, present_item_id ) ) @@ -112,11 +114,13 @@ def add_item(ctx: Context, item_type: str, item_public_id: PublicId) -> None: is_local = ctx.config.get("is_local") ctx.clean_paths.append(dest_path) - if is_local_item(item_public_id): + + is_distributed_item = is_local_item(item_public_id) + if is_local and is_distributed_item: source_path = find_item_in_distribution(ctx, item_type, item_public_id) package_path = copy_package_directory(source_path, dest_path) - elif is_local: - source_path = find_item_locally(ctx, item_type, item_public_id) + elif is_local and not is_distributed_item: + source_path, _ = find_item_locally(ctx, item_type, item_public_id) package_path = copy_package_directory(source_path, dest_path) else: package_path = fetch_package( @@ -128,7 +132,8 @@ def add_item(ctx: Context, item_type: str, item_public_id: PublicId) -> None: raise click.ClickException("Failed to add an item with incorrect fingerprint.") _add_item_deps(ctx, item_type, item_config) - register_item(ctx, item_type, item_public_id) + register_item(ctx, item_type, item_config.public_id) + click.echo(f"Successfully added {item_type} '{item_config.public_id}'.") def _add_item_deps(ctx: Context, item_type: str, item_config) -> None: diff --git a/aea/cli/config.py b/aea/cli/config.py index a896e4eea0..1328e5030f 100644 --- a/aea/cli/config.py +++ b/aea/cli/config.py @@ -16,19 +16,29 @@ # limitations under the License. # # ------------------------------------------------------------------------------ - -"""Implementation of the 'aea list' subcommand.""" - -from typing import Dict, List, cast +"""Implementation of the 'aea config' subcommand.""" +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple, Union import click -from aea.cli.utils.click_utils import AEAJsonPathType +from aea.cli.utils.config import ( + _try_get_configuration_object_from_aea_config, + handle_dotted_path, +) from aea.cli.utils.constants import FALSE_EQUIVALENTS, FROM_STRING_TO_TYPE from aea.cli.utils.context import Context from aea.cli.utils.decorators import check_aea_project, pass_ctx from aea.cli.utils.generic import get_parent_object, load_yaml +from aea.configurations.base import ( + AgentConfig, + ComponentId, + DEFAULT_AEA_CONFIG_FILE, + PackageType, + SkillConfig, +) from aea.configurations.loader import ConfigLoader +from aea.exceptions import AEAException @click.group() @@ -39,11 +49,11 @@ def config(click_context): # pylint: disable=unused-argument @config.command() -@click.argument("JSON_PATH", required=True, type=AEAJsonPathType()) +@click.argument("JSON_PATH", required=True) @pass_ctx -def get(ctx: Context, json_path: List[str]): +def get(ctx: Context, json_path: str): """Get a field.""" - value = _get_config_value(ctx, json_path) + value = ConfigGetSet(ctx, json_path).get() click.echo(value) @@ -54,89 +64,285 @@ def get(ctx: Context, json_path: List[str]): type=click.Choice(["str", "int", "bool", "float"]), help="Specify the type of the value.", ) -@click.argument("JSON_PATH", required=True, type=AEAJsonPathType()) +@click.argument("JSON_PATH", required=True) @click.argument("VALUE", required=True, type=str) @pass_ctx def set_command( ctx: Context, - json_path: List[str], + json_path: str, value: str, type: str, # pylint: disable=redefined-builtin ): """Set a field.""" - _set_config(ctx, json_path, value, type) + ConfigGetSet(ctx, json_path).set(value, type) + +class ConfigGetSet: + """Tool to get/set value in agent config.""" -def _get_config_value(ctx: Context, json_path: List[str]): - config_loader = cast(ConfigLoader, ctx.config.get("configuration_loader")) - configuration_file_path = cast(str, ctx.config.get("configuration_file_path")) + def __init__(self, ctx: Context, dotted_path: str) -> None: + """Init tool. - configuration_object = load_yaml(configuration_file_path) - config_loader.validator.validate(instance=configuration_object) + :param ctx: click context + :param dotted_path: str with attribute path to get/set + """ + self.dotted_path = dotted_path + self.ctx = ctx - parent_object_path = json_path[:-1] - attribute_name = json_path[-1] - parent_object = _get_and_validate_parent_obj( - configuration_object, parent_object_path, attribute_name - ) + ( + self.json_path, + self.path_to_resource_configuration, + self.config_loader, + self.component_id, + ) = self._handle_dotted_path() - return parent_object.get(attribute_name) + def _handle_dotted_path( + self, + ) -> Tuple[List[str], Path, ConfigLoader, Optional[ComponentId]]: + """Handle dotted path.""" + try: + return handle_dotted_path(self.dotted_path, self.agent_config.author) + except AEAException as e: + raise click.ClickException(*e.args) + @property + def parent_obj_path(self) -> List[str]: + """Get the parent object (dotted) path.""" + return self.json_path[:-1] -def _set_config(ctx: Context, json_path: List[str], value: str, type_str: str) -> None: - config_loader = cast(ConfigLoader, ctx.config.get("configuration_loader")) - configuration_file_path = cast(str, ctx.config.get("configuration_file_path")) + @property + def attr_name(self) -> str: + """Attribute name.""" + return self.json_path[-1] - configuration_object = load_yaml(configuration_file_path) - config_loader.validator.validate(instance=configuration_object) + def get(self) -> Union[str, int]: + """Get config value.""" + if self.component_id: + return self._get_component_value() - parent_object_path = json_path[:-1] - attribute_name = json_path[-1] - parent_object = _get_and_validate_parent_obj( - configuration_object, parent_object_path, attribute_name - ) + return self._get_agent_value() - type_ = FROM_STRING_TO_TYPE[type_str] - try: - if type_ != bool: - parent_object[attribute_name] = type_(value) + def _get_agent_value(self) -> Union[str, int]: + """Get config value for agent config.""" + configuration_object = self._load_configuration_object() + return self._get_value_from_configuration_object(configuration_object) + + def _get_component_value(self) -> Union[str, int]: + """Get config value for component section in agent config or component package.""" + configuration_object_from_agent = self._get_configuration_object_from_agent() + try: + if not configuration_object_from_agent: + raise click.ClickException("") + return self._get_value_from_configuration_object( + configuration_object_from_agent + ) + except click.ClickException: + configuration_object = self._load_configuration_object() + return self._get_value_from_configuration_object(configuration_object) + + @property + def is_target_agent(self) -> bool: + """Is target of get/update is agent config.""" + return self.component_id is None + + def _load_configuration_object(self) -> Dict: + """Load configuration object for component/agent.""" + if self.is_target_agent: + configuration_object = self.agent_config.json else: - parent_object[attribute_name] = value not in FALSE_EQUIVALENTS - except ValueError: # pragma: no cover - raise click.ClickException("Cannot convert {} to type {}".format(value, type_)) + configuration_object = load_yaml(str(self.path_to_resource_configuration)) + + self.config_loader.validate(configuration_object) + return configuration_object + + def _get_configuration_object_from_agent( + self, + ) -> Optional[Dict[str, Union[str, int]]]: + """Get component configuration object from agent component configurations.""" + if not self.component_id: # pragma: nocover + raise ValueError("component in not set") - try: - configuration_obj = config_loader.configuration_class.from_json( - configuration_object + return _try_get_configuration_object_from_aea_config( + self.ctx, self.component_id ) - config_loader.validate(configuration_obj.json) - config_loader.dump(configuration_obj, open(configuration_file_path, "w")) - except Exception: - raise click.ClickException("Attribute or value not valid.") - - -def _get_and_validate_parent_obj( - conf_obj: Dict, parent_obj_path: List, attr_name: str -) -> Dict: - """ - Get and validate parent object. - - :param conf_obj: configuration object. - :param parent_obj_path: parent object path. - :param attr_name: attribute name. - - :return: parent object. - :raises: ClickException if attribute is not valid. - """ - try: - parent_obj = get_parent_object(conf_obj, parent_obj_path) - except ValueError as e: - raise click.ClickException(str(e)) - - if attr_name not in parent_obj: - raise click.ClickException("Attribute '{}' not found.".format(attr_name)) - if not isinstance(parent_obj.get(attr_name), (str, int, bool, float)): - raise click.ClickException( - "Attribute '{}' is not of primitive type.".format(attr_name) + + def _get_value_from_configuration_object( + self, conf_obj: Dict[str, Union[str, int]] + ) -> Any: + """Get value from configuration object.""" + return self._get_parent_object(conf_obj).get(self.attr_name) + + def _get_parent_object( + self, conf_obj: Dict[str, Union[str, int]] + ) -> Dict[str, Union[str, int]]: + """ + Get and validate parent object. + + :param conf_obj: configuration object. + + :return: parent object. + :raises: ClickException if attribute is not valid. + """ + parent_obj_path = self.parent_obj_path + attr_name = self.attr_name + try: + parent_obj = get_parent_object(conf_obj, parent_obj_path) + except ValueError as e: + raise click.ClickException(str(e)) + + if attr_name not in parent_obj: + raise click.ClickException("Attribute '{}' not found.".format(attr_name)) + if not isinstance(parent_obj.get(attr_name), (str, int, bool, float)): + raise click.ClickException( + "Attribute '{}' is not of primitive type.".format(attr_name) + ) + return parent_obj + + @property + def agent_config(self) -> AgentConfig: + """Return current context AgentConfig.""" + return self.ctx.agent_config + + def _check_set_field_name(self) -> None: + """ + Check field names on set operation. + + :return: None + + :raises: click.ClickException is field is not allowed to be changeed. + """ + top_level_key = self.json_path[0] + + if self.component_id: + config_class = self.component_id.package_type.configuration_class() + else: + config_class = type(self.agent_config) + + if top_level_key not in config_class.FIELDS_ALLOWED_TO_UPDATE: + raise click.ClickException( + f"Field `{top_level_key}` is not allowed to change!" + ) + if config_class == SkillConfig: + if top_level_key not in SkillConfig.FIELDS_WITH_NESTED_FIELDS: + return # pragma: nocover + if len(self.json_path) < 3: + path = ".".join(self.json_path) + raise click.ClickException(f"Path '{path}' not valid for skill.") + second_level_key = self.json_path[1] + third_level_key = self.json_path[2] + if third_level_key not in SkillConfig.NESTED_FIELDS_ALLOWED_TO_UPDATE: + raise click.ClickException( # pragma: nocover + f"Field `{top_level_key}.{second_level_key}.{third_level_key}` is not allowed to change!" + ) + + def _fix_component_id_version(self) -> None: + """Update self.component_id with actual version defined in agent instead of latest.""" + if not self.component_id: # pragma: nocover: check for mypy + raise ValueError("Component id is not set") + + component_id = None + + for component_id in self.agent_config.package_dependencies: + if ( + component_id.author == self.component_id.author + and component_id.package_type == self.component_id.package_type + and component_id.name == self.component_id.name + ): + break + else: # pragma: nocover # should be always ok, cause component has to be alrady registered + raise ValueError("component is not registered?") + + self.component_id = component_id + + def _parent_object_for_agent_component_configuration( + self, + ) -> Dict[str, Union[str, int]]: + if not self.component_id: # pragma: nocover: check for mypy + raise ValueError("no component specified") + configuration_object = self.agent_config.component_configurations.get( + self.component_id, {} ) - return parent_obj + self.agent_config.component_configurations[ + self.component_id + ] = configuration_object + parent_object = configuration_object + # get or create parent object in component configuration + for i in self.parent_obj_path: + if i not in parent_object: + parent_object[i] = {} + parent_object = parent_object[i] + return parent_object + + def set(self, value: str, type_str: str) -> None: + """ + Set config value. + + :param value: value to set + :param type_str: name of the value type. + + :return None + """ + # do a check across real configuration + self._check_set_field_name() + + configuration_object = self._load_configuration_object() + parent_configuration_object = self._get_parent_object(configuration_object) + + if self.component_id: + # component. parent is component config in agent config + self._fix_component_id_version() + parent_configuration_object = ( + self._parent_object_for_agent_component_configuration() + ) + self._update_object(parent_configuration_object, type_str, value) + agent_configuration_object = self.agent_config.json + else: + # already agent + self._update_object(parent_configuration_object, type_str, value) + agent_configuration_object = configuration_object + self._dump_agent_configuration(agent_configuration_object) + + def _update_object(self, parent_object: Dict, type_str: str, value: str) -> None: + """ + Update dict with value converted to type. + + :param parent_object: dict where value should be updated, + :param: type_str: type name to convert value on update. + :param value: str of the value to set. + + :return: None + """ + type_ = FROM_STRING_TO_TYPE[type_str] + try: + if type_ != bool: + parent_object[self.attr_name] = type_(value) + else: + parent_object[self.attr_name] = value not in FALSE_EQUIVALENTS + except ValueError: # pragma: no cover + raise click.ClickException( + "Cannot convert {} to type {}".format(value, type_) + ) + + @property + def agent_config_loader(self) -> ConfigLoader: + """Return agent config loader.""" + return ConfigLoader.from_configuration_type(PackageType.AGENT) + + @property + def agent_config_file_path(self) -> Path: + """Return agent config file path.""" + return Path(".") / DEFAULT_AEA_CONFIG_FILE + + def _dump_agent_configuration( + self, agent_configuration_object: Dict[str, Union[str, int]] + ) -> None: + """Save agent configuration.""" + try: + configuration_obj = self.agent_config_loader.configuration_class.from_json( + agent_configuration_object + ) + self.agent_config_loader.validate(configuration_obj.json) + with open(self.agent_config_file_path, "w") as file_pointer: + self.agent_config_loader.dump(configuration_obj, file_pointer) + except Exception as e: # pragma: nocover + raise click.ClickException(f"Attribute or value not valid. {e}") diff --git a/aea/cli/core.py b/aea/cli/core.py index 829a63a0d3..53a4fdafed 100644 --- a/aea/cli/core.py +++ b/aea/cli/core.py @@ -18,7 +18,6 @@ # # ------------------------------------------------------------------------------ - """Core definitions for the AEA command-line tool.""" import click @@ -54,6 +53,8 @@ from aea.cli.run import run from aea.cli.scaffold import scaffold from aea.cli.search import search +from aea.cli.transfer import transfer +from aea.cli.upgrade import upgrade from aea.cli.utils.config import get_or_create_cli_config from aea.cli.utils.constants import AUTHOR_KEY from aea.cli.utils.context import Context @@ -65,6 +66,7 @@ @click.version_option(aea.__version__, prog_name="aea") @simple_verbosity_option(logger, default="INFO") @click.option( + "-s", "--skip-consistency-check", "skip_consistency_check", is_flag=True, @@ -143,3 +145,5 @@ def _init_gui() -> None: cli.add_command(run) cli.add_command(scaffold) cli.add_command(search) +cli.add_command(transfer) +cli.add_command(upgrade) diff --git a/aea/cli/freeze.py b/aea/cli/freeze.py index 6dbae8eca0..8e741a2f75 100644 --- a/aea/cli/freeze.py +++ b/aea/cli/freeze.py @@ -50,5 +50,5 @@ def _get_deps(click_context: click.core.Context) -> List[str]: for dependency_name, dependency_data in sorted( ctx.get_dependencies().items(), key=lambda x: x[0] ): - deps.append(dependency_name + dependency_data.get("version", "")) + deps.append(dependency_name + dependency_data.version) return deps diff --git a/aea/cli/generate.py b/aea/cli/generate.py index 2eef2171b5..be3e7df825 100644 --- a/aea/cli/generate.py +++ b/aea/cli/generate.py @@ -104,7 +104,9 @@ def _generate_item(click_context, item_type, specification_path): output_path = os.path.join(ctx.cwd, item_type_plural) protocol_generator = ProtocolGenerator(specification_path, output_path) - protocol_generator.generate() + warning_message = protocol_generator.generate() + if warning_message is not None: + click.echo(warning_message) # Add the item to the configurations logger.debug( diff --git a/aea/cli/generate_wealth.py b/aea/cli/generate_wealth.py index c8d346a4a0..d1c2f1beb2 100644 --- a/aea/cli/generate_wealth.py +++ b/aea/cli/generate_wealth.py @@ -19,16 +19,15 @@ """Implementation of the 'aea generate_wealth' subcommand.""" -from typing import Dict, Optional, cast +from typing import cast import click from aea.cli.utils.context import Context from aea.cli.utils.decorators import check_aea_project -from aea.cli.utils.package_utils import verify_or_create_private_keys_ctx +from aea.cli.utils.package_utils import get_wallet_from_context from aea.crypto.helpers import try_generate_testnet_wealth from aea.crypto.registries import faucet_apis_registry, make_faucet_api_cls -from aea.crypto.wallet import Wallet @click.command() @@ -45,12 +44,11 @@ @check_aea_project def generate_wealth(click_context, sync, type_): """Generate wealth for address on test network.""" - _try_generate_wealth(click_context, type_, sync) + ctx = cast(Context, click_context.obj) + _try_generate_wealth(ctx, type_, sync) -def _try_generate_wealth( - click_context: click.core.Context, type_: str, sync: bool -) -> None: +def _try_generate_wealth(ctx: Context, type_: str, sync: bool) -> None: """ Try generate wealth for the provided network identifier. @@ -59,14 +57,7 @@ def _try_generate_wealth( :param sync: whether to sync or not :return: None """ - ctx = cast(Context, click_context.obj) - verify_or_create_private_keys_ctx(ctx=ctx) - - private_key_paths = { - config_pair[0]: config_pair[1] - for config_pair in ctx.agent_config.private_key_paths.read_all() - } # type: Dict[str, Optional[str]] - wallet = Wallet(private_key_paths) + wallet = get_wallet_from_context(ctx) try: address = wallet.addresses[type_] faucet_api_cls = make_faucet_api_cls(type_) diff --git a/aea/cli/get_address.py b/aea/cli/get_address.py index 632353e26a..3ff3f84dae 100644 --- a/aea/cli/get_address.py +++ b/aea/cli/get_address.py @@ -25,9 +25,8 @@ from aea.cli.utils.context import Context from aea.cli.utils.decorators import check_aea_project -from aea.cli.utils.package_utils import verify_or_create_private_keys_ctx +from aea.cli.utils.package_utils import get_wallet_from_context from aea.crypto.registries import crypto_registry -from aea.crypto.wallet import Wallet @click.command() @@ -41,11 +40,12 @@ @check_aea_project def get_address(click_context, type_): """Get the address associated with the private key.""" - address = _try_get_address(click_context, type_) + ctx = cast(Context, click_context.obj) + address = _try_get_address(ctx, type_) click.echo(address) -def _try_get_address(click_context, type_): +def _try_get_address(ctx: Context, type_: str): """ Try to get address. @@ -54,15 +54,8 @@ def _try_get_address(click_context, type_): :return: address. """ - ctx = cast(Context, click_context.obj) - verify_or_create_private_keys_ctx(ctx=ctx) - - private_key_paths = { - config_pair[0]: config_pair[1] - for config_pair in ctx.agent_config.private_key_paths.read_all() - } + wallet = get_wallet_from_context(ctx) try: - wallet = Wallet(private_key_paths) address = wallet.addresses[type_] return address except ValueError as e: # pragma: no cover diff --git a/aea/cli/get_wealth.py b/aea/cli/get_wealth.py index 021c48faa1..02f294286b 100644 --- a/aea/cli/get_wealth.py +++ b/aea/cli/get_wealth.py @@ -19,18 +19,14 @@ """Implementation of the 'aea get_wealth' subcommand.""" -from typing import Dict, Optional, cast +from typing import cast import click from aea.cli.utils.context import Context from aea.cli.utils.decorators import check_aea_project -from aea.cli.utils.package_utils import ( - try_get_balance, - verify_or_create_private_keys_ctx, -) +from aea.cli.utils.package_utils import get_wallet_from_context, try_get_balance from aea.crypto.registries import ledger_apis_registry -from aea.crypto.wallet import Wallet @click.command() @@ -44,16 +40,11 @@ @check_aea_project def get_wealth(click_context, type_): """Get the wealth associated with the private key.""" - wealth = _try_get_wealth(click_context, type_) + ctx = cast(Context, click_context.obj) + wealth = _try_get_wealth(ctx, type_) click.echo(wealth) -def _try_get_wealth(click_context: click.core.Context, type_: str): - ctx = cast(Context, click_context.obj) - verify_or_create_private_keys_ctx(ctx=ctx) - private_key_paths = { - config_pair[0]: config_pair[1] - for config_pair in ctx.agent_config.private_key_paths.read_all() - } # type: Dict[str, Optional[str]] - wallet = Wallet(private_key_paths) +def _try_get_wealth(ctx: Context, type_: str): + wallet = get_wallet_from_context(ctx) return try_get_balance(ctx.agent_config, wallet, type_) diff --git a/aea/cli/install.py b/aea/cli/install.py index 88ce64dfd5..d6dfcf32ec 100644 --- a/aea/cli/install.py +++ b/aea/cli/install.py @@ -16,21 +16,18 @@ # limitations under the License. # # ------------------------------------------------------------------------------ - """Implementation of the 'aea install' subcommand.""" -import pprint -import subprocess # nosec import sys -from typing import List, Optional, cast +from typing import Optional, cast import click from aea.cli.utils.context import Context from aea.cli.utils.decorators import check_aea_project from aea.cli.utils.loggers import logger -from aea.configurations.base import Dependency from aea.exceptions import AEAException, enforce +from aea.helpers.install_dependency import install_dependency, run_install_subprocess @click.command() @@ -68,61 +65,11 @@ def do_install(ctx: Context, requirement: Optional[str] = None) -> None: logger.debug("Installing all the dependencies...") dependencies = ctx.get_dependencies() for name, d in dependencies.items(): - _install_dependency(name, d) + install_dependency(name, d, logger=logger) except AEAException as e: raise click.ClickException(str(e)) -def _install_dependency(dependency_name: str, dependency: Dependency): - click.echo("Installing {}...".format(pprint.pformat(dependency_name))) - try: - index = dependency.get("index", None) - git_url = dependency.get("git", None) - revision = dependency.get("ref", "") - version_constraint = dependency.get("version", "") - command = [sys.executable, "-m", "pip", "install"] - if git_url is not None: - command += ["-i", index] if index is not None else [] - command += ["git+" + git_url + "@" + revision + "#egg=" + dependency_name] - else: - command += ["-i", index] if index is not None else [] - command += [dependency_name + version_constraint] - logger.debug("Calling '{}'".format(" ".join(command))) - return_code = _run_install_subprocess(command) - if return_code == 1: - # try a second time - return_code = _run_install_subprocess(command) - enforce(return_code == 0, "Return code != 0.") - except Exception as e: - raise AEAException( - "An error occurred while installing {}, {}: {}".format( - dependency_name, dependency, str(e) - ) - ) - - -def _run_install_subprocess( - install_command: List[str], install_timeout: float = 300 -) -> int: - """ - Try executing install command. - - :param install_command: list strings of the command - :param install_timeout: timeout to wait pip to install - :return: the return code of the subprocess - """ - try: - subp = subprocess.Popen(install_command) # nosec - subp.wait(install_timeout) - return_code = subp.returncode - finally: - poll = subp.poll() - if poll is None: # pragma: no cover - subp.terminate() - subp.wait(30) - return return_code - - def _install_from_requirement(file: str, install_timeout: float = 300) -> None: """ Install from requirements. @@ -133,7 +80,7 @@ def _install_from_requirement(file: str, install_timeout: float = 300) -> None: :return: None """ try: - returncode = _run_install_subprocess( + returncode = run_install_subprocess( [sys.executable, "-m", "pip", "install", "-r", file], install_timeout ) enforce(returncode == 0, "Return code != 0.") diff --git a/aea/cli/interact.py b/aea/cli/interact.py index 19d1976f4d..35f065dc11 100644 --- a/aea/cli/interact.py +++ b/aea/cli/interact.py @@ -157,7 +157,7 @@ def _try_construct_envelope( performative_str = "bytes" performative = DefaultMessage.Performative(performative_str) click.echo( - "Provide message of protocol fetchai/default:0.5.0 for performative {}:".format( + "Provide message of protocol fetchai/default:0.7.0 for performative {}:".format( performative_str ) ) diff --git a/aea/cli/launch.py b/aea/cli/launch.py index a35458d39b..dba5695ba7 100644 --- a/aea/cli/launch.py +++ b/aea/cli/launch.py @@ -115,7 +115,6 @@ def _launch_threads(agents: List[Path]) -> int: for agent_directory in agents: with cd(agent_directory): aeas.append(AEABuilder.from_aea_project(".").build()) - runner = AEARunner( agents=aeas, mode="threaded", fail_policy=ExecutorExceptionPolicies.log_only ) diff --git a/aea/cli/push.py b/aea/cli/push.py index 631e31a2cc..a8a438633f 100644 --- a/aea/cli/push.py +++ b/aea/cli/push.py @@ -113,9 +113,7 @@ def _save_item_locally(ctx: Context, item_type: str, item_id: PublicId) -> None: _check_package_public_id(source_path, item_type, item_id) copytree(source_path, target_path) click.echo( - '{} "{}" successfully saved in packages folder.'.format( - item_type.title(), item_id - ) + f'{item_type.title()} "{item_id}" successfully saved in packages folder.' ) @@ -125,10 +123,10 @@ def _check_package_public_id(source_path, item_type, item_id) -> None: item_author = config.get("author", "") item_name = config.get("name", "") item_version = config.get("version", "") - if ( - item_id.name != item_name - or item_id.author != item_author - or item_id.version != item_version + actual_item_id = PublicId(item_author, item_name, item_version) + if not actual_item_id.same_prefix(item_id) or ( + not item_id.package_version.is_latest + and item_id.version != actual_item_id.version ): raise click.ClickException( "Version, name or author does not match. Expected '{}', found '{}'".format( diff --git a/aea/cli/registry/add.py b/aea/cli/registry/add.py index 6b3b3aae32..ed5d0b2b38 100644 --- a/aea/cli/registry/add.py +++ b/aea/cli/registry/add.py @@ -21,9 +21,7 @@ import os from pathlib import Path -import click - -from aea.cli.registry.utils import download_file, extract, request_api +from aea.cli.registry.utils import download_file, extract, get_package_meta from aea.cli.utils.loggers import logger from aea.configurations.base import PublicId @@ -44,18 +42,14 @@ def fetch_package(obj_type: str, public_id: PublicId, cwd: str, dest: str) -> Pa public_id=public_id, obj_type=obj_type ) ) - author, name, version = public_id.author, public_id.name, public_id.version - item_type_plural = obj_type + "s" # used for API and folder paths - - api_path = "/{}/{}/{}/{}".format(item_type_plural, author, name, version) - resp = request_api("GET", api_path) - file_url = resp["file"] logger.debug( "Downloading {obj_type} {public_id}...".format( public_id=public_id, obj_type=obj_type ) ) + package_meta = get_package_meta(obj_type, public_id) + file_url = package_meta["file"] filepath = download_file(file_url, cwd) # next code line is needed because the items are stored in tarball packages as folders @@ -66,8 +60,8 @@ def fetch_package(obj_type: str, public_id: PublicId, cwd: str, dest: str) -> Pa ) ) extract(filepath, dest) - click.echo( - "Successfully fetched {obj_type}: {public_id}.".format( + logger.debug( + "Successfully fetched {obj_type} '{public_id}'.".format( public_id=public_id, obj_type=obj_type ) ) diff --git a/aea/cli/registry/fetch.py b/aea/cli/registry/fetch.py index 8efdd4e051..c98f6a47d3 100644 --- a/aea/cli/registry/fetch.py +++ b/aea/cli/registry/fetch.py @@ -17,8 +17,8 @@ # # ------------------------------------------------------------------------------ """Methods for CLI fetch functionality.""" - import os +import shutil from typing import Optional import click @@ -32,14 +32,19 @@ @clean_after -def fetch_agent(ctx: Context, public_id: PublicId, alias: Optional[str] = None) -> None: +def fetch_agent( + ctx: Context, + public_id: PublicId, + alias: Optional[str] = None, + target_dir: Optional[str] = None, +) -> None: """ Fetch Agent from Registry. :param ctx: Context - :param public_id: str public ID of desirable Agent. - :param ctx: a Context object. + :param public_id: str public ID of desirable agent. :param alias: an optional alias. + :param target_dir: the target directory to which the agent is fetched. :return: None """ author, name, version = public_id.author, public_id.name, public_id.version @@ -49,14 +54,16 @@ def fetch_agent(ctx: Context, public_id: PublicId, alias: Optional[str] = None) filepath = download_file(file_url, ctx.cwd) - folder_name = name if alias is None else alias + folder_name = target_dir or (name if alias is None else alias) aea_folder = os.path.join(ctx.cwd, folder_name) ctx.clean_paths.append(aea_folder) extract(filepath, ctx.cwd) - if alias is not None: - os.rename(name, alias) + if alias or target_dir: + shutil.move( + os.path.join(ctx.cwd, name), aea_folder, + ) ctx.cwd = aea_folder try_to_load_agent_config(ctx) diff --git a/aea/cli/registry/utils.py b/aea/cli/registry/utils.py index 720edb1b1a..3c9cc80dce 100644 --- a/aea/cli/registry/utils.py +++ b/aea/cli/registry/utils.py @@ -18,7 +18,6 @@ # ------------------------------------------------------------------------------ """Utils used for operating Registry with CLI.""" - import os import tarfile from json.decoder import JSONDecodeError @@ -28,7 +27,10 @@ from aea.cli.registry.settings import AUTH_TOKEN_KEY, REGISTRY_API_URL from aea.cli.utils.config import get_or_create_cli_config +from aea.cli.utils.context import Context from aea.cli.utils.loggers import logger +from aea.cli.utils.package_utils import find_item_locally +from aea.configurations.base import PublicId def get_auth_token() -> str: @@ -209,3 +211,44 @@ def is_auth_token_present(): :return: bool is logged in. """ return get_auth_token() is not None + + +def get_package_meta(obj_type: str, public_id: PublicId) -> dict: + """ + Get package meta data from remote registry. + + :param obj_type: str. component type + :param public_id: component public id + + :return: dict with package details + """ + api_path = f"/{obj_type}s/{public_id.author}/{public_id.name}/{public_id.version}" + resp = request_api("GET", api_path) + return resp + + +def get_latest_version_available_in_registry( + ctx: Context, item_type: str, item_public_id: PublicId +) -> PublicId: + """ + Get latest avalable package version public id. + + :param ctx: Context object. + :param item_type: the item type. + :param item_public_id: the item public id. + :return: PublicId + """ + is_local = ctx.config.get("is_local") + try: + if is_local: + _, item_config = find_item_locally(ctx, item_type, item_public_id) + latest_item_public_id = item_config.public_id + else: + package_meta = get_package_meta(item_type, item_public_id) + latest_item_public_id = PublicId.from_str(package_meta["public_id"]) + except Exception: # pylint: disable=broad-except + raise click.ClickException( + f"Package {item_public_id} details can not be fetched from the registry!" + ) + + return latest_item_public_id diff --git a/aea/cli/remove.py b/aea/cli/remove.py index d301368503..799b7a0e60 100644 --- a/aea/cli/remove.py +++ b/aea/cli/remove.py @@ -16,27 +16,48 @@ # limitations under the License. # # ------------------------------------------------------------------------------ - """Implementation of the 'aea remove' subcommand.""" import os import shutil +from collections import defaultdict +from contextlib import contextmanager from pathlib import Path +from typing import Dict, Generator, Optional, Set, Tuple, cast import click from aea.cli.utils.click_utils import PublicIdParameter +from aea.cli.utils.config import load_item_config from aea.cli.utils.context import Context from aea.cli.utils.decorators import check_aea_project, pass_ctx from aea.cli.utils.loggers import logger -from aea.configurations.base import DEFAULT_AEA_CONFIG_FILE, PublicId +from aea.cli.utils.package_utils import get_item_public_id_by_author_name +from aea.configurations.base import ( + AgentConfig, + ComponentId, + ComponentType, + DEFAULT_AEA_CONFIG_FILE, + PackageConfiguration, + PackageId, + PublicId, +) @click.group() +@click.option( + "-w", + "--with-dependencies", + is_flag=True, + help="Remove obsolete dependencies not required anymore.", +) @click.pass_context @check_aea_project -def remove(click_context): # pylint: disable=unused-argument +def remove(click_context, with_dependencies): # pylint: disable=unused-argument """Remove a resource from the agent.""" + ctx = cast(Context, click_context.obj) + if with_dependencies: + ctx.set_config("with_dependencies", True) @remove.command() @@ -87,65 +108,361 @@ def skill(ctx: Context, skill_id): remove_item(ctx, "skill", skill_id) -def remove_item(ctx: Context, item_type: str, item_id: PublicId) -> None: - """ - Remove an item from the configuration file and agent, given the public id. +class ItemRemoveHelper: + """Helper to check dependencies on removing component from agent config.""" - :param ctx: Context object. - :param item_type: type of item. - :param item_id: item public ID. + def __init__(self, agent_config: AgentConfig) -> None: + """Init helper.""" + self._agent_config = agent_config - :return: None - :raises ClickException: if some error occures. + def get_agent_dependencies_with_reverse_dependencies( + self, + ) -> Dict[PackageId, Set[PackageId]]: + """ + Get all reverse dependencices in agent. + + :return: dict with PackageId: and set of PackageIds that uses this package + + Return example: + { + PackageId(protocol, fetchai/default:0.7.0): { + PackageId(skill, fetchai/echo:0.9.0), + PackageId(skill, fetchai/error:0.7.0) + }, + PackageId(connection, fetchai/stub:0.11.0): set(), + PackageId(skill, fetchai/error:0.7.0): set(), + PackageId(skill, fetchai/echo:0.9.0): set()} + ) + """ + return self.get_item_dependencies_with_reverse_dependencies( + self._agent_config, None + ) + + @staticmethod + def get_item_config(package_id: PackageId) -> PackageConfiguration: + """Get item config for item,_type and public_id.""" + return load_item_config( + str(package_id.package_type), + package_path=Path("vendor") + / package_id.public_id.author + / f"{str(package_id.package_type)}s" + / package_id.public_id.name, + ) + + @staticmethod + def _get_item_requirements( + item: PackageConfiguration, + ) -> Generator[PackageId, None, None]: + """ + List all the requiemenents for item provided. + + :return: generator with package ids: (type, public_id) + """ + for item_type in map(str, ComponentType): + items = getattr(item, f"{item_type}s", set()) + for item_public_id in items: + yield PackageId(item_type, item_public_id) + + def get_item_dependencies_with_reverse_dependencies( + self, item: PackageConfiguration, package_id: Optional[PackageId] = None + ) -> Dict[PackageId, Set[PackageId]]: + """ + Get item dependencies. + + It's recursive and provides all the sub dependencies. + + :return: dict with PackageId: and set of PackageIds that uses this package + """ + result: defaultdict = defaultdict(set) + + for dep_package_id in self._get_item_requirements(item): + if package_id is None: + _ = result[dep_package_id] # init default dict value + else: + result[dep_package_id].add(package_id) + if not self.is_present_in_agent_config(dep_package_id): + continue + dep_item = self.get_item_config(dep_package_id) + for item_key, deps in self.get_item_dependencies_with_reverse_dependencies( + dep_item, dep_package_id + ).items(): + result[item_key] = result[item_key].union(deps) + + return result + + def is_present_in_agent_config(self, package_id: PackageId) -> bool: + """Check item is in agent config.""" + current_item = get_item_public_id_by_author_name( + self._agent_config, + str(package_id.package_type), + package_id.public_id.author, + package_id.public_id.name, + ) + return bool(current_item) + + def check_remove( + self, item_type: str, item_public_id: PublicId + ) -> Tuple[Set[PackageId], Set[PackageId], Dict[PackageId, Set[PackageId]]]: + """ + Check item can be removed from agent. + + required by - set of components that requires this component + can be deleted - set of dependencies used only by component so can be deleted + can not be deleted - dict - keys - packages can not be deleted, values are set of packages requireed by. + + :return: Tuple[required by, can be deleted, can not be deleted.] + """ + package_id = PackageId(item_type, item_public_id) + item = self.get_item_config(package_id) + agent_deps = self.get_agent_dependencies_with_reverse_dependencies() + item_deps = self.get_item_dependencies_with_reverse_dependencies( + item, package_id + ) + can_be_removed = set() + can_not_be_removed = dict() + + for dep_key, deps in item_deps.items(): + if agent_deps[dep_key] == deps: + can_be_removed.add(dep_key) + else: + can_not_be_removed[dep_key] = agent_deps[dep_key] - deps + + return agent_deps[package_id], can_be_removed, can_not_be_removed + + +@contextmanager +def remove_unused_component_configurations(ctx: Context): """ - item_name = item_id.name - item_type_plural = "{}s".format(item_type) - existing_item_ids = getattr(ctx.agent_config, item_type_plural) - existing_items_name_to_ids = { - public_id.name: public_id for public_id in existing_item_ids - } - - agent_name = ctx.agent_config.agent_name - click.echo( - "Removing {item_type} '{item_name}' from the agent '{agent_name}'...".format( - agent_name=agent_name, item_type=item_type, item_name=item_name + Remove all component configurations for items not registered and dump agent config. + + Context manager! + Clean all configurations on enter, restore actual configurations and dump agent config. + """ + saved_configuration = ctx.agent_config.component_configurations + ctx.agent_config.component_configurations = {} + try: + yield + finally: + for component_id in ctx.agent_config.package_dependencies: + if component_id in saved_configuration: + ctx.agent_config.component_configurations[ + component_id + ] = saved_configuration[component_id] + + with open(os.path.join(ctx.cwd, DEFAULT_AEA_CONFIG_FILE), "w") as f: + ctx.agent_loader.dump(ctx.agent_config, f) + + +class RemoveItem: + """Implementation of item remove from the project.""" + + def __init__( + self, + ctx: Context, + item_type: str, + item_id: PublicId, + with_dependencies: bool, + force: bool = False, + ) -> None: + """ + Init remove item tool. + + :param ctx: click context. + :param item_type: str, package type + :param item_id: PublicId of the item to remove. + :oaram force: bool. if True remove even required by another package. + + :return: None + """ + self.ctx = ctx + self.force = force + self.item_type = item_type + self.item_id = item_id + self.with_dependencies = with_dependencies + self.item_type_plural = "{}s".format(item_type) + self.item_name = item_id.name + + self.current_item = self.get_current_item() + self.required_by: Set[PackageId] = set() + self.dependencies_can_be_removed: Set[PackageId] = set() + try: + ( + self.required_by, + self.dependencies_can_be_removed, + *_, + ) = ItemRemoveHelper(self.agent_config).check_remove( + self.item_type, self.current_item + ) + except FileNotFoundError: + pass # item registered but not present on filesystem + + def get_current_item(self) -> PublicId: + """Return public id of the item already presents in agent config.""" + current_item = get_item_public_id_by_author_name( + self.ctx.agent_config, + self.item_type, + self.item_id.author, + self.item_id.name, ) - ) + if not current_item: # pragma: nocover # actually checked in check_item_present + raise click.ClickException( + "The {} '{}' is not supported.".format(self.item_type, self.item_id) + ) + return current_item - if item_name not in existing_items_name_to_ids.keys() and not any( - item_id.same_prefix(existing_id) for existing_id in existing_item_ids - ): - raise click.ClickException( - "The {} '{}' is not supported.".format(item_type, item_id) + def remove(self) -> None: + """Remove item and it's dependencies if specified.""" + click.echo( + "Removing {item_type} '{item_name}' from the agent '{agent_name}'...".format( + agent_name=self.agent_name, + item_type=self.item_type, + item_name=self.item_name, + ) + ) + self.remove_item() + if self.with_dependencies: + self.remove_dependencies() + click.echo( + "{item_type} '{item_name}' was removed from the agent '{agent_name}'...".format( + agent_name=self.agent_name, + item_type=self.item_type, + item_name=self.item_name, + ) ) - item_folder = Path(ctx.cwd, "vendor", item_id.author, item_type_plural, item_name) - if not item_folder.exists(): - # check if it is present in custom packages. - item_folder = Path(ctx.cwd, item_type_plural, item_name) - if not item_folder.exists(): + @property + def agent_items(self) -> Set[PublicId]: + """Return items registered with agent of the same type as item.""" + return getattr(self.agent_config, self.item_type_plural, set) + + @property + def is_required_by(self) -> bool: + """Is required by any other registered component in the agent.""" + return bool(self.required_by) + + def remove_item(self) -> None: + """ + Remove item. + + Removed from the filesystem. + Removed from the agent configuration + + Does not remove dependencies, please use `remove_dependencies`. + """ + if (not self.force) and self.is_required_by: raise click.ClickException( - "{} {} not found. Aborting.".format(item_type.title(), item_name) + f"Package {self.item_type} {self.item_id} can not be removed because it is required by {','.join(map(str, self.required_by))}" ) - if ( - item_folder.exists() and not ctx.agent_config.author == item_id.author - ): # pragma: no cover + self._remove_package() + self._remove_from_config() + + @property + def cwd(self) -> str: + """Get current workdir.""" + return self.ctx.cwd + + @property + def agent_config(self) -> AgentConfig: + """Get agent config from context.""" + return self.ctx.agent_config + + @property + def agent_name(self) -> str: + """Get agent name.""" + return self.ctx.agent_config.agent_name + + def _get_item_folder(self) -> Path: + """Get item package folder.""" + item_folder = Path( + self.cwd, + "vendor", + self.item_id.author, + self.item_type_plural, + self.item_name, + ) + if not item_folder.exists(): + # check if it is present in custom packages. + item_folder = Path(self.cwd, self.item_type_plural, self.item_name) + if not item_folder.exists(): + raise click.ClickException( + "{} {} not found. Aborting.".format( + self.item_type.title(), self.item_name + ) + ) + if ( + item_folder.exists() + and not self.agent_config.author == self.item_id.author + ): # pragma: no cover + raise click.ClickException( + "{} {} author is different from {} agent author. " + "Please fix the author field.".format( + self.item_name, self.item_type, self.agent_name + ) + ) + logger.debug( + "Removing local {} {}.".format(self.item_type, self.item_name) + ) # pragma: no cover + return item_folder + + def _remove_package(self) -> None: + """Remove package from filesystem.""" + item_folder = self._get_item_folder() + try: + shutil.rmtree(item_folder) + except BaseException: raise click.ClickException( - "{} {} author is different from {} agent author. " - "Please fix the author field.".format(item_name, item_type, agent_name) + f"An error occurred during {item_folder} removing." ) + + def _remove_from_config(self) -> None: + """Remove item from agent config.""" + current_item = self.get_current_item() logger.debug( - "Removing local {} {}.".format(item_type, item_name) - ) # pragma: no cover + "Removing the {} from {}".format(self.item_type, DEFAULT_AEA_CONFIG_FILE) + ) + self.agent_items.remove(current_item) + self.agent_config.component_configurations.pop( + ComponentId(self.item_type, current_item), None + ) + self._dump_agent_config() - try: - shutil.rmtree(item_folder) - except BaseException: - raise click.ClickException("An error occurred.") - - # removing the item from the configurations. - item_public_id = existing_items_name_to_ids[item_name] - logger.debug("Removing the {} from {}".format(item_type, DEFAULT_AEA_CONFIG_FILE)) - existing_item_ids.remove(item_public_id) - with open(os.path.join(ctx.cwd, DEFAULT_AEA_CONFIG_FILE), "w") as f: - ctx.agent_loader.dump(ctx.agent_config, f) + def _dump_agent_config(self) -> None: + """Save agent config to the filesystem.""" + with open(os.path.join(self.ctx.cwd, DEFAULT_AEA_CONFIG_FILE), "w") as f: + self.ctx.agent_loader.dump(self.agent_config, f) + + def remove_dependencies(self) -> None: + """Remove all the dependecies related only to the package.""" + if not self.dependencies_can_be_removed: + return + click.echo( + f"Removing obsolete dependencies for {self.agent_name}: {self.dependencies_can_be_removed}..." + ) + for dependency in self.dependencies_can_be_removed: + RemoveItem( + self.ctx, + str(dependency.package_type), + dependency.public_id, + with_dependencies=False, + force=True, + ).remove_item() + click.echo( + f"{str(dependency.package_type).capitalize()} {dependency.public_id} was removed from {self.agent_name}." + ) + + +def remove_item(ctx: Context, item_type: str, item_id: PublicId) -> None: + """ + Remove an item from the configuration file and agent, given the public id. + + :param ctx: Context object. + :param item_type: type of item. + :param item_id: item public ID. + + :return: None + :raises ClickException: if some error occures. + """ + with remove_unused_component_configurations(ctx): + RemoveItem( + ctx, item_type, item_id, cast(bool, ctx.config.get("with_dependencies")) + ).remove() diff --git a/aea/cli/run.py b/aea/cli/run.py index 1d7e9bb160..bd86b07973 100644 --- a/aea/cli/run.py +++ b/aea/cli/run.py @@ -26,7 +26,7 @@ from aea import __version__ from aea.aea import AEA -from aea.aea_builder import AEABuilder +from aea.aea_builder import AEABuilder, DEFAULT_ENV_DOTFILE from aea.cli.install import do_install from aea.cli.utils.click_utils import ConnectionsOption from aea.cli.utils.constants import AEA_LOGO, REQUIREMENTS @@ -51,7 +51,7 @@ "env_file", type=click.Path(), required=False, - default=".env", + default=DEFAULT_ENV_DOTFILE, help="Specify an environment file (default: .env)", ) @click.option( diff --git a/aea/cli/transfer.py b/aea/cli/transfer.py new file mode 100644 index 0000000000..344263d425 --- /dev/null +++ b/aea/cli/transfer.py @@ -0,0 +1,141 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2020 Fetch.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. +# +# ------------------------------------------------------------------------------ + +"""Implementation of the 'aea transfer' subcommand.""" +import time +from typing import Optional, cast + +import click + +from aea.cli.get_address import _try_get_address +from aea.cli.utils.context import Context +from aea.cli.utils.decorators import check_aea_project +from aea.cli.utils.package_utils import get_wallet_from_context, try_get_balance +from aea.common import Address +from aea.crypto.ledger_apis import LedgerApis +from aea.crypto.registries import ledger_apis_registry + + +DEFAULT_SETTLE_TIMEOUT = 60 + + +@click.command() +@click.argument( + "type_", + metavar="TYPE", + type=click.Choice(ledger_apis_registry.supported_ids), + required=True, +) +@click.argument( + "address", type=str, required=True, +) +@click.argument( + "amount", type=int, required=True, +) +@click.argument("fee", type=int, required=False, default=100) +@click.option("-y", "--yes", type=bool, is_flag=True, default=False) +@click.option("--settle-timeout", type=int, default=DEFAULT_SETTLE_TIMEOUT) +@click.option("--sync", type=bool, is_flag=True, default=False) +@click.pass_context +@check_aea_project +def transfer(click_context, type_, address, amount, fee, yes, settle_timeout, sync): + """Get the wealth associated with the private key.""" + ctx = cast(Context, click_context.obj) + try: + own_address = _try_get_address(ctx, type_) + except KeyError: + raise click.ClickException( + f"No private key registered for `{type_}` in wallet!" + ) + if not yes: + click.confirm( + f"You are about to transfer from {own_address} to {address} on ledger {type_} the amount {amount} with fee {fee}. Do you want to continue?", + abort=True, + ) + + tx_digest = do_transfer(ctx, type_, address, amount, fee) + + if not tx_digest: + raise click.ClickException("Failed to send a transaction!") + + if sync: + click.echo("Transaction set. Waiting to be settled...") + wait_tx_settled(type_, tx_digest, timeout=settle_timeout) + click.echo( + f"Transaction successfully settled. Sent {amount} with fee {fee} to {address}, transaction digest: {tx_digest}" + ) + else: + click.echo( + f"Transaction successfully submitted. Sending {amount} with fee {fee} to {address}, transaction digest: {tx_digest}" + ) + + +def wait_tx_settled( + identifier: str, tx_digest: str, timeout=DEFAULT_SETTLE_TIMEOUT +) -> None: + """ + Wait transaction is settled succesfuly. + + :param identifier: str, ledger id + :param tx_digest: str, transaction digest + :param timeout: int, timeout in seconds efore timeout error raised + + :return: None + raises TimeoutError on timeout + """ + t = time.time() + while True: + if time.time() - t > timeout: + raise TimeoutError() + if LedgerApis.is_transaction_settled(identifier, tx_digest): + return + time.sleep(1) + + +def do_transfer( + ctx: Context, identifier: str, address: Address, amount: int, tx_fee: int +) -> Optional[str]: + """ + Perform wealth transfer to another account. + + :param ctx: click context + :param identifier: str, ledger id to perform transfer operation + :param address: address of the recepient + :param amount: int, amount of wealth to transfer + :param tx_fee: int, fee for transaction + + :return: str, transaction digest or None if failed. + """ + click.echo("Starting transfer ...") + wallet = get_wallet_from_context(ctx) + source_address = wallet.addresses[identifier] + + balance = int(try_get_balance(ctx.agent_config, wallet, identifier)) + total_payable = amount + tx_fee + if total_payable > balance: + raise click.ClickException( + f"Balance is not enough! Available={balance}, required={total_payable}!" + ) + + tx_nonce = LedgerApis.generate_tx_nonce(identifier, source_address, address) + transaction = LedgerApis.get_transfer_transaction( + identifier, source_address, address, amount, tx_fee, tx_nonce + ) + tx_signed = wallet.sign_transaction(identifier, transaction) + return LedgerApis.send_signed_transaction(identifier, tx_signed) diff --git a/aea/cli/upgrade.py b/aea/cli/upgrade.py new file mode 100644 index 0000000000..e46b9b6fcf --- /dev/null +++ b/aea/cli/upgrade.py @@ -0,0 +1,328 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2019 Fetch.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. +# +# ------------------------------------------------------------------------------ +"""Implementation of the 'aea upgrade' subcommand.""" +from contextlib import suppress +from typing import Dict, Iterable, List, Set, Tuple, cast + +import click + +from aea.cli.add import add_item +from aea.cli.registry.utils import get_latest_version_available_in_registry +from aea.cli.remove import ( + ItemRemoveHelper, + RemoveItem, + remove_unused_component_configurations, +) +from aea.cli.utils.click_utils import PublicIdParameter +from aea.cli.utils.context import Context +from aea.cli.utils.decorators import check_aea_project, clean_after, pass_ctx +from aea.cli.utils.package_utils import ( + get_item_public_id_by_author_name, + is_item_present, +) +from aea.configurations.base import PackageId, PublicId + + +@click.group(invoke_without_command=True) +@click.option("--local", is_flag=True, help="For upgrading from local folder.") +@click.pass_context +@check_aea_project +def upgrade(click_context, local): + """Upgrade agent's component.""" + ctx = cast(Context, click_context.obj) + if local: + ctx.set_config("is_local", True) + + if click_context.invoked_subcommand is None: + upgrade_project(ctx) + + +@upgrade.command() +@click.argument("connection_public_id", type=PublicIdParameter(), required=True) +@pass_ctx +def connection(ctx: Context, connection_public_id: PublicId): + """Upgrade a connection at the configuration file.""" + upgrade_item(ctx, "connection", connection_public_id) + + +@upgrade.command() +@click.argument("contract_public_id", type=PublicIdParameter(), required=True) +@pass_ctx +def contract(ctx: Context, contract_public_id: PublicId): + """Upgrade a contract at the configuration file.""" + upgrade_item(ctx, "contract", contract_public_id) + + +@upgrade.command() +@click.argument("protocol_public_id", type=PublicIdParameter(), required=True) +@pass_ctx +def protocol(ctx: Context, protocol_public_id): + """Upgrade a protocol for the agent.""" + upgrade_item(ctx, "protocol", protocol_public_id) + + +@upgrade.command() +@click.argument("skill_public_id", type=PublicIdParameter(), required=True) +@pass_ctx +def skill(ctx: Context, skill_public_id: PublicId): + """Upgrade a skill for the agent.""" + upgrade_item(ctx, "skill", skill_public_id) + + +@clean_after +def upgrade_project(ctx: Context) -> None: # pylint: disable=unused-argument + """Perform project upgrade.""" + click.echo("Starting project upgrade...") + + item_remover = ItemRemoveHelper(ctx.agent_config) + agent_items = item_remover.get_agent_dependencies_with_reverse_dependencies() + items_to_upgrade = set() + upgraders: List[ItemUpgrader] = [] + shared_deps: Set[PackageId] = set() + shared_deps_to_remove = set() + items_to_upgrade_dependencies = set() + + for package_id, deps in agent_items.items(): + if deps: + continue + + with suppress(UpgraderException): + item_upgrader = ItemUpgrader( + ctx, str(package_id.package_type), package_id.public_id.to_latest() + ) + new_version = item_upgrader.check_upgrade_is_required() + items_to_upgrade.add((package_id, new_version)) + upgraders.append(item_upgrader) + shared_deps.update(item_upgrader.deps_can_not_be_removed.keys()) + items_to_upgrade_dependencies.update(item_upgrader.dependencies) + items_to_upgrade_dependencies.add(package_id) + + if not items_to_upgrade: + click.echo("Everything is already up to date!") + return + + for dep in shared_deps: + if agent_items[dep] - items_to_upgrade_dependencies: + # shared deps not resolved, nothing to do next + continue # pragma: nocover + # add it to remove + shared_deps_to_remove.add(dep) + + with remove_unused_component_configurations(ctx): + if shared_deps_to_remove: + click.echo( + f"Removing shared dependencies: {', '.join(map(str, shared_deps_to_remove))}..." + ) + for dep in shared_deps_to_remove: + RemoveItem( + ctx, + str(dep.package_type), + dep.public_id, + with_dependencies=False, + force=True, + ).remove_item() + click.echo("Shared dependencies removed.") + + for upgrader in upgraders: + upgrader.remove_item() + upgrader.add_item() + + click.echo("Finished project upgrade. Everything is up to date now!") + + +class UpgraderException(Exception): + """Base upgrader exception.""" + + +class NotAddedException(UpgraderException): + """Item was not found in agent cause not added.""" + + +class AlreadyActualVersionException(UpgraderException): + """Actual version already installed.""" + + def __init__(self, version: str): + """Init exception.""" + super().__init__(version) + self.version = version + + +class IsRequiredException(UpgraderException): + """Package can not be upgraded cause required by another.""" + + def __init__(self, required_by: Iterable[PackageId]): + """Init exception.""" + super().__init__(required_by) + self.required_by = required_by + + +class ItemUpgrader: + """Tool to upgrade agent's item .""" + + def __init__(self, ctx: Context, item_type: str, item_public_id: PublicId) -> None: + """ + Init item upgrader. + + :param ctx: context + :param item_type: str, type of the package + :param item_public_id: item to upgrade. + """ + self.ctx = ctx + self.ctx.set_config("with_dependencies", True) + self.item_type = item_type + self.item_public_id = item_public_id + self.current_item_public_id = self.get_current_item() + ( + self.in_requirements, + self.deps_can_be_removed, + self.deps_can_not_be_removed, + ) = self.get_dependencies() + self.dependencies: Set[PackageId] = set() + self.dependencies.update(self.deps_can_be_removed) + self.dependencies.update(self.deps_can_not_be_removed) + + def get_current_item(self) -> PublicId: + """Return public id of the item already presents in agent config.""" + self.check_item_present() + current_item = get_item_public_id_by_author_name( + self.ctx.agent_config, + self.item_type, + self.item_public_id.author, + self.item_public_id.name, + ) + if not current_item: # pragma: nocover # actually checked in check_item_present + raise ValueError("Item not found!") + return current_item + + def check_item_present(self) -> None: + """Check item going to be upgraded already registered in agent.""" + if not is_item_present(self.ctx, self.item_type, self.item_public_id): + raise NotAddedException() + + def get_dependencies( + self, + ) -> Tuple[Set[PackageId], Set[PackageId], Dict[PackageId, Set[PackageId]]]: + """ + Return dependency details for item. + + :return: same as for ItemRemoveHelper.check_remove + """ + return ItemRemoveHelper(self.ctx.agent_config).check_remove( + self.item_type, self.current_item_public_id + ) + + def check_upgrade_is_required(self) -> str: + """ + Check upgrade is required otherwise raise UpgraderException. + + :return: new version of the package. + """ + if self.in_requirements: + # check if we trying to upgrade some component dependency + raise IsRequiredException(self.in_requirements) + + if self.item_public_id.version != "latest": + new_item = self.item_public_id + else: + new_item = get_latest_version_available_in_registry( + self.ctx, self.item_type, self.item_public_id + ) + + if self.current_item_public_id.version == new_item.version: + raise AlreadyActualVersionException(new_item.version) + return new_item.version + + def remove_item(self) -> None: + """Remove item from agent.""" + remove_item = RemoveItem( + self.ctx, + self.item_type, + self.item_public_id, + with_dependencies=True, + force=True, + ) + remove_item.remove() + click.echo(f"Item { self.item_type} {self.item_public_id} removed!") + + def add_item(self) -> None: + """Add new package version to agent.""" + click.echo(f"Adding item {self.item_type} {self.item_public_id}.") + add_item(self.ctx, str(self.item_type), self.item_public_id) + + +@clean_after +def upgrade_item(ctx: Context, item_type: str, item_public_id: PublicId) -> None: + """ + Upgrade an item. + + :param ctx: Context object. + :param item_type: the item type. + :param item_public_id: the item public id. + :return: None + """ + try: + with remove_unused_component_configurations(ctx): + item_upgrader = ItemUpgrader(ctx, item_type, item_public_id) + click.echo( + "Upgrading {} '{}/{}' from version '{}' to '{}' for the agent '{}'...".format( + item_type, + item_public_id.author, + item_public_id.name, + item_upgrader.current_item_public_id.version, + item_public_id.version, + ctx.agent_config.agent_name, + ) + ) + version = item_upgrader.check_upgrade_is_required() + + item_upgrader.remove_item() + item_upgrader.add_item() + + click.echo( + "The {} '{}/{}' for the agent '{}' has been successfully upgraded from version '{}' to '{}'.".format( + item_type, + item_public_id.author, + item_public_id.name, + ctx.agent_config.agent_name, + item_upgrader.current_item_public_id.version, + version, + ) + ) + + except NotAddedException: + raise click.ClickException( + "A {} with id '{}/{}' is not registered. Please use the `add` command. Aborting...".format( + item_type, item_public_id.author, item_public_id.name + ), + ) + except AlreadyActualVersionException as e: + raise click.ClickException( + "The {} with id '{}/{}' already has version '{}'. Nothing to upgrade.".format( + item_type, item_public_id.author, item_public_id.name, e.version, + ) + ) + except IsRequiredException as e: + raise click.ClickException( + "Can not upgrade {} '{}/{}' because it is required by '{}'".format( + item_type, + item_public_id.author, + item_public_id.name, + ", ".join(map(str, e.required_by)), + ) + ) diff --git a/aea/cli/utils/click_utils.py b/aea/cli/utils/click_utils.py index 5af58b86b7..3ae04cba21 100644 --- a/aea/cli/utils/click_utils.py +++ b/aea/cli/utils/click_utils.py @@ -16,7 +16,6 @@ # limitations under the License. # # ------------------------------------------------------------------------------ - """Module with click utils of the aea cli.""" import os @@ -26,9 +25,8 @@ import click -from aea.cli.utils.config import handle_dotted_path, try_to_load_agent_config +from aea.cli.utils.config import try_to_load_agent_config from aea.configurations.base import DEFAULT_AEA_CONFIG_FILE, PublicId -from aea.exceptions import AEAException class ConnectionsOption(click.Option): @@ -119,35 +117,3 @@ def convert(self, value, param, ctx): ) finally: os.chdir(cwd) - - -class AEAJsonPathType(click.ParamType): - """This class implements the JSON-path parameter type for the AEA CLI tool.""" - - name = "json-path" - - def convert(self, value, param, ctx): - """Separate the path between path to resource and json path to attribute. - - Allowed values: - 'agent.an_attribute_name' - 'protocols.my_protocol.an_attribute_name' - 'connections.my_connection.an_attribute_name' - 'contracts.my_contract.an_attribute_name' - 'skills.my_skill.an_attribute_name' - 'vendor.author.[protocols|connections|skills].package_name.attribute_name - """ - try: - ( - json_path, - path_to_resource_configuration, - config_loader, - ) = handle_dotted_path(value) - except AEAException as e: - self.fail(str(e)) - else: - ctx.obj.set_config( - "configuration_file_path", path_to_resource_configuration - ) - ctx.obj.set_config("configuration_loader", config_loader) - return json_path diff --git a/aea/cli/utils/config.py b/aea/cli/utils/config.py index dbdd476209..558c478f72 100644 --- a/aea/cli/utils/config.py +++ b/aea/cli/utils/config.py @@ -16,14 +16,12 @@ # limitations under the License. # # ------------------------------------------------------------------------------ - """A module with config tools of the aea cli.""" - import logging import logging.config import os from pathlib import Path -from typing import Dict, Tuple +from typing import Dict, List, Optional, Set, Tuple import click import jsonschema @@ -38,13 +36,16 @@ from aea.cli.utils.exceptions import AEAConfigException from aea.cli.utils.generic import load_yaml from aea.configurations.base import ( + ComponentId, + ComponentType, DEFAULT_AEA_CONFIG_FILE, PackageConfiguration, PackageType, + PublicId, _get_default_configuration_file_name_from_type, ) from aea.configurations.loader import ConfigLoader, ConfigLoaders -from aea.exceptions import AEAException +from aea.exceptions import AEAEnforceError, AEAException, enforce def try_to_load_agent_config( @@ -81,6 +82,8 @@ def try_to_load_agent_config( DEFAULT_AEA_CONFIG_FILE ) ) + except AEAEnforceError as e: + raise click.ClickException(str(e)) # pragma: nocover def _init_cli_config() -> None: @@ -139,7 +142,9 @@ def load_item_config(item_type: str, package_path: Path) -> PackageConfiguration return item_config -def handle_dotted_path(value: str) -> Tuple: +def handle_dotted_path( + value: str, author: str +) -> Tuple[List[str], Path, ConfigLoader, Optional[ComponentId]]: """Separate the path between path to resource and json path to attribute. Allowed values: @@ -148,11 +153,17 @@ def handle_dotted_path(value: str) -> Tuple: 'connections.my_connection.an_attribute_name' 'contracts.my_contract.an_attribute_name' 'skills.my_skill.an_attribute_name' - 'vendor.author.[protocols|connections|skills].package_name.attribute_name + 'vendor.author.[protocols|contracts|connections|skills].package_name.attribute_name + + We also return the component id to retrieve the configuration of a specific + component. Notice that at this point we don't know the version, + so we put 'latest' as version, but later we will ignore it because + we will filter with only the component prefix (i.e. the triple type, author and name). :param value: dotted path. + :param author: the author string. - :return: Tuple[list of settings dict keys, filepath, config loader]. + :return: Tuple[list of settings dict keys, filepath, config loader, component id]. """ parts = value.split(".") @@ -163,7 +174,7 @@ def handle_dotted_path(value: str) -> Tuple: ) if ( - len(parts) < 1 + len(parts) < 2 or parts[0] == "agent" and len(parts) < 2 or parts[0] == "vendor" @@ -180,10 +191,26 @@ def handle_dotted_path(value: str) -> Tuple: resource_type_plural = "agents" path_to_resource_configuration = Path(DEFAULT_AEA_CONFIG_FILE) json_path = parts[1:] + component_id = None elif root == "vendor": + # parse json path resource_author = parts[1] resource_type_plural = parts[2] resource_name = parts[3] + + # extract component id + resource_type_singular = resource_type_plural[:-1] + try: + component_type = ComponentType(resource_type_singular) + except ValueError as e: + raise AEAException( + f"'{resource_type_plural}' is not a valid component type. Please use one of {ComponentType.plurals()}." + ) from e + component_id = ComponentId( + component_type, PublicId(resource_author, resource_name) + ) + + # find path to the resource directory path_to_resource_directory = ( Path(".") / "vendor" @@ -197,7 +224,7 @@ def handle_dotted_path(value: str) -> Tuple: ) json_path = parts[4:] if not path_to_resource_directory.exists(): - raise AEAException( + raise AEAException( # pragma: nocover "Resource vendor/{}/{}/{} does not exist.".format( resource_author, resource_type_plural, resource_name ) @@ -206,6 +233,16 @@ def handle_dotted_path(value: str) -> Tuple: # navigate the resources of the agent to reach the target configuration file. resource_type_plural = root resource_name = parts[1] + + # extract component id + resource_type_singular = resource_type_plural[:-1] + component_type = ComponentType(resource_type_singular) + resource_author = author + component_id = ComponentId( + component_type, PublicId(resource_author, resource_name) + ) + + # find path to the resource directory path_to_resource_directory = Path(".") / resource_type_plural / resource_name path_to_resource_configuration = ( path_to_resource_directory @@ -220,7 +257,7 @@ def handle_dotted_path(value: str) -> Tuple: ) config_loader = ConfigLoader.from_configuration_type(resource_type_plural[:-1]) - return json_path, path_to_resource_configuration, config_loader + return json_path, path_to_resource_configuration, config_loader, component_id def update_item_config(item_type: str, package_path: Path, **kwargs) -> None: @@ -264,3 +301,59 @@ def validate_item_config(item_type: str, package_path: Path) -> None: field_name, item_type ) ) + + +def _try_get_configuration_object_from_aea_config( + ctx: Context, component_id: ComponentId +) -> Optional[Dict]: + """ + Try to get the configuration object in the AEA config. + + The result is not guaranteed because there might not be any + + :param ctx: the CLI context. + :param component_id: the component id whose prefix points to the relevant + custom configuration in the AEA configuration file. + :return: the configuration object to get/set an attribute. + """ + if component_id is None: + # this is the case when the prefix of the json path is 'agent'. + return None # pragma: nocover + type_, author, name = ( + component_id.component_type, + component_id.author, + component_id.name, + ) + component_ids = set(ctx.agent_config.component_configurations.keys()) + true_component_id = _try_get_component_id_from_prefix( + component_ids, (type_, author, name) + ) + if true_component_id is not None: + return ctx.agent_config.component_configurations.get(true_component_id) + return None + + +def _try_get_component_id_from_prefix( + component_ids: Set[ComponentId], component_prefix: Tuple[ComponentType, str, str] +) -> Optional[ComponentId]: + """ + Find the component id matching a component prefix. + + :param component_ids: the set of component id. + :param component_prefix: the component prefix. + :return: the component id that matches the prefix. + :raises ValueError: if there are more than two components as candidate results. + """ + type_, author, name = component_prefix + results = list( + filter( + lambda x: x.component_type == type_ + and x.author == author + and x.name == name, + component_ids, + ) + ) + if len(results) == 0: + return None + enforce(len(results) == 1, f"Expected only one component, found {len(results)}.") + return results[0] diff --git a/aea/cli/utils/generic.py b/aea/cli/utils/generic.py index 582d673b2b..8108c68aa7 100644 --- a/aea/cli/utils/generic.py +++ b/aea/cli/utils/generic.py @@ -44,12 +44,16 @@ def get_parent_object(obj: Dict, dotted_path: List[str]): current_object = current_object.get(current_attribute_name, None) # if the dictionary does not have the key we want, fail. if current_object is None: - raise ValueError("Cannot get attribute '{}'".format(current_attribute_name)) + raise ValueError(f"Cannot get attribute '{current_attribute_name}'.") + if not isinstance(current_object, dict): + raise ValueError( + f"Attribute '{current_attribute_name}' is not a dictionary." + ) index += 1 # if we are not at the last step and the attribute value is not a dictionary, fail. if isinstance(current_object, dict): return current_object - raise ValueError("The target object is not a dictionary.") + raise ValueError("The target object is not a dictionary.") # pragma: nocover def load_yaml(filepath: str) -> Dict: diff --git a/aea/cli/utils/package_utils.py b/aea/cli/utils/package_utils.py index bcf491d2b6..b9726e5246 100644 --- a/aea/cli/utils/package_utils.py +++ b/aea/cli/utils/package_utils.py @@ -16,14 +16,13 @@ # limitations under the License. # # ------------------------------------------------------------------------------ - """Module with package utils of the aea cli.""" import os import re import shutil from pathlib import Path -from typing import List, Optional +from typing import Dict, List, Optional, Set, Tuple import click from jsonschema import ValidationError @@ -34,6 +33,7 @@ from aea.cli.utils.loggers import logger from aea.configurations.base import ( AgentConfig, + ComponentConfiguration, DEFAULT_AEA_CONFIG_FILE, PackageType, PublicId, @@ -49,6 +49,7 @@ from aea.crypto.helpers import verify_or_create_private_keys from aea.crypto.ledger_apis import DEFAULT_LEDGER_CONFIGS, LedgerApis from aea.crypto.wallet import Wallet +from aea.exceptions import AEAEnforceError ROOT = Path(".") @@ -222,14 +223,18 @@ def copy_package_directory(src: Path, dst: str) -> Path: return Path(dst) -def find_item_locally(ctx, item_type, item_public_id) -> Path: +def find_item_locally( + ctx, item_type, item_public_id +) -> Tuple[Path, ComponentConfiguration]: """ Find an item in the local registry. :param ctx: the CLI context. :param item_type: the type of the item to load. One of: protocols, connections, skills :param item_public_id: the public id of the item to find. - :return: path to the package directory (either in registry or in aea directory). + + :return: tuple of path to the package directory (either in registry or in aea directory) and component configuration + :raises SystemExit: if the search fails. """ item_type_plural = item_type + "s" @@ -271,7 +276,7 @@ def find_item_locally(ctx, item_type, item_public_id) -> Path: "Cannot find {} with author and version specified.".format(item_type) ) - return package_path + return package_path, item_configuration def find_item_in_distribution( # pylint: disable=unused-argument @@ -396,8 +401,7 @@ def register_item(ctx: Context, item_type: str, item_public_id: PublicId) -> Non logger.debug( "Registering the {} into {}".format(item_type, DEFAULT_AEA_CONFIG_FILE) ) - item_type_plural = item_type + "s" - supported_items = getattr(ctx.agent_config, item_type_plural) + supported_items = get_items(ctx.agent_config, item_type) supported_items.add(item_public_id) ctx.agent_loader.dump( ctx.agent_config, open(os.path.join(ctx.cwd, DEFAULT_AEA_CONFIG_FILE), "w") @@ -440,14 +444,67 @@ def is_item_present( :return: boolean is item present. """ # check item presence only by author/package_name pair, without version. - item_type_plural = item_type + "s" - items_in_config = set( - map(lambda x: (x.author, x.name), getattr(ctx.agent_config, item_type_plural)) - ) + item_path = get_package_path(ctx, item_type, item_public_id, is_vendor=is_vendor) - return (item_public_id.author, item_public_id.name,) in items_in_config and Path( - item_path - ).exists() + registered_item_public_id = get_item_public_id_by_author_name( + ctx.agent_config, item_type, item_public_id.author, item_public_id.name + ) + is_item_registered = registered_item_public_id is not None + + return is_item_registered and Path(item_path).exists() + + +def get_item_id_present( + ctx: Context, item_type: str, item_public_id: PublicId +) -> PublicId: + """ + Get the item present in AEA. + + :param ctx: context object. + :param item_type: type of an item. + :param item_public_id: PublicId of an item. + + :return: boolean is item present. + :raises: AEAEnforceError + """ + registered_item_public_id = get_item_public_id_by_author_name( + ctx.agent_config, item_type, item_public_id.author, item_public_id.name + ) + if registered_item_public_id is None: + raise AEAEnforceError("Cannot find item.") # pragma: nocover + return registered_item_public_id + + +def get_item_public_id_by_author_name( + agent_config: AgentConfig, item_type: str, author: str, name: str +) -> Optional[PublicId]: + """ + Get component public_id by author and namme. + + :param agent_config: AgentConfig + :param item_type: str. component type: connection, skill, contract, protocol + :param author: str. author name + :param name: str. component name + + :return: PublicId + """ + items_in_config = { + (x.author, x.name): x for x in get_items(agent_config, item_type) + } + return items_in_config.get((author, name), None) + + +def get_items(agent_config: AgentConfig, item_type: str) -> Set[PublicId]: + """ + Get all items of certain type registered in AgentConfig. + + :param agent_config: AgentConfig + :param item_type: str. component type: connection, skill, contract, protocol + + :return: set of public ids + """ + item_type_plural = item_type + "s" + return getattr(agent_config, item_type_plural) def is_local_item(item_public_id: PublicId) -> bool: @@ -482,10 +539,35 @@ def try_get_balance( # pylint: disable=unused-argument try: if type_ not in DEFAULT_LEDGER_CONFIGS: # pragma: no cover raise ValueError("No ledger api config for {} available.".format(type_)) - address = wallet.addresses[type_] + address = wallet.addresses.get(type_) + if address is None: # pragma: no cover + raise ValueError("No key '{}' in wallet.".format(type_)) balance = LedgerApis.get_balance(type_, address) if balance is None: # pragma: no cover raise ValueError("No balance returned!") return balance except ValueError as e: # pragma: no cover raise click.ClickException(str(e)) + + +def get_wallet_from_context(ctx: Context) -> Wallet: + """ + Get wallet from current click Context. + + :param ctx: click context + + :return: wallet + """ + verify_or_create_private_keys_ctx(ctx=ctx) + wallet = get_wallet_from_agent_config(ctx.agent_config) + return wallet + + +def get_wallet_from_agent_config(agent_config: AgentConfig) -> Wallet: + """Get wallet from agent_cofig provided.""" + private_key_paths: Dict[str, Optional[str]] = { + config_pair[0]: config_pair[1] + for config_pair in agent_config.private_key_paths.read_all() + } + wallet = Wallet(private_key_paths) + return wallet diff --git a/aea/cli_gui/__init__.py b/aea/cli_gui/__init__.py index e9a490bbf9..2690348e64 100644 --- a/aea/cli_gui/__init__.py +++ b/aea/cli_gui/__init__.py @@ -70,7 +70,7 @@ max_log_lines = 100 -class AppContext: +class AppContext: # pylint: disable=too-few-public-methods """Store useful global information about the app. Can't add it into the app object itself because mypy complains. diff --git a/aea/components/base.py b/aea/components/base.py index d02c1ef295..50f3255cac 100644 --- a/aea/components/base.py +++ b/aea/components/base.py @@ -36,7 +36,7 @@ from aea.helpers.logging import WithLogger -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) class Component(ABC, WithLogger): @@ -141,5 +141,5 @@ def load_aea_package(configuration: ComponentConfiguration) -> None: spec = importlib.util.spec_from_file_location(import_path, subpackage_init_file) module = importlib.util.module_from_spec(spec) sys.modules[import_path] = module - logger.debug(f"loading {import_path}: {module}") + _default_logger.debug(f"loading {import_path}: {module}") spec.loader.exec_module(module) # type: ignore diff --git a/aea/components/loader.py b/aea/components/loader.py index c2a4ad8f0e..f9de80e60c 100644 --- a/aea/components/loader.py +++ b/aea/components/loader.py @@ -18,7 +18,6 @@ # ------------------------------------------------------------------------------ """This module contains utilities for loading components.""" -import logging import re from typing import Dict, Type @@ -31,9 +30,6 @@ from aea.skills.base import Skill -logger = logging.getLogger(__name__) - - def component_type_to_class(component_type: ComponentType) -> Type[Component]: """ Get the component class from the component type. diff --git a/aea/configurations/base.py b/aea/configurations/base.py index 30b235a985..0692d55eb6 100644 --- a/aea/configurations/base.py +++ b/aea/configurations/base.py @@ -27,13 +27,14 @@ import re from abc import ABC, abstractmethod from collections import OrderedDict -from copy import deepcopy +from copy import copy, deepcopy from enum import Enum from pathlib import Path from typing import ( Any, Collection, Dict, + FrozenSet, Generic, List, Optional, @@ -50,9 +51,11 @@ import semver from packaging.specifiers import SpecifierSet from packaging.version import Version +from urllib3.util import Url, parse_url from aea.__version__ import __version__ as __aea_version__ from aea.exceptions import enforce +from aea.helpers.base import RegexConstrainedString, recursive_update from aea.helpers.ipfs.base import IPFSHashOnly @@ -79,16 +82,172 @@ "contract.yaml", ] -Dependency = dict -""" -A dependency is a dictionary with the following (optional) keys: +DEFAULT_PYPI_INDEX_URL = "https://pypi.org/simple" +DEFAULT_GIT_REF = "master" + + +class PyPIPackageName(RegexConstrainedString): + """A PyPI Package name.""" + + REGEX = re.compile(r"^([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9._-]*[A-Za-z0-9])$") + + +class GitRef(RegexConstrainedString): + """ + A Git reference. + + It can be a branch name, a commit hash or a tag. + """ + + REGEX = re.compile(r"^[A-Za-z0-9/.\-_]+$") + + +class Dependency: + """ + This class represents a PyPI dependency. + + It contains the following information: - version: a version specifier(s) (e.g. '==0.1.0'). - index: the PyPI index where to download the package from (default: https://pypi.org) - git: the URL to the Git repository (e.g. https://github.com/fetchai/agents-aea.git) - ref: either the branch name, the tag, the commit number or a Git reference (default: 'master'.) -If the 'git' field is set, the 'version' field will be ignored. -These fields will be forwarded to the 'pip' command. -""" + + If the 'git' field is set, the 'version' field will be ignored. + These fields will be forwarded to the 'pip' command. + """ + + def __init__( + self, + name: Union[PyPIPackageName, str], + version: Union[str, SpecifierSet] = "", + index: Optional[Union[str, Url]] = None, + git: Optional[Union[str, Url]] = None, + ref: Optional[Union[GitRef, str]] = None, + ): + """ + Initialize a PyPI dependency. + + :param name: the package name. + :param version: the specifier set object + :param index: the URL to the PyPI server. + :param git: the URL to a git repository. + :param ref: the Git reference (branch/commit/tag). + """ + self._name: PyPIPackageName = PyPIPackageName(name) + self._version: SpecifierSet = self._parse_version(version) + self._index: Optional[Url] = self._parse_url( + index + ) if index is not None else None + self._git: Optional[Url] = self._parse_url(git) if git is not None else None + self._ref: Optional[GitRef] = GitRef(ref) if ref is not None else None + + @property + def name(self) -> str: + """Get the name.""" + return str(self._name) + + @property + def version(self) -> str: + """Get the version.""" + return str(self._version) + + @property + def index(self) -> Optional[str]: + """Get the index.""" + return str(self._index) if self._index else None + + @property + def git(self) -> Optional[str]: + """Get the git.""" + return str(self._git) if self._git else None + + @property + def ref(self) -> Optional[str]: + """Get the ref.""" + return str(self._ref) if self._ref else None + + @staticmethod + def _parse_version(version: Union[str, SpecifierSet]) -> SpecifierSet: + """ + Parse a version specifier set. + + :param version: the version, a string or a SpecifierSet instance. + :return: the SpecifierSet instance. + """ + return version if isinstance(version, SpecifierSet) else SpecifierSet(version) + + @staticmethod + def _parse_url(url: Union[str, Url]) -> Url: + """ + Parse an URL. + + :param url: the URL, in either string or an urllib3.Url instance. + :return: the urllib3.Url instance. + """ + return url if isinstance(url, Url) else parse_url(url) + + @classmethod + def from_json(cls, obj: Dict[str, Dict[str, str]]) -> "Dependency": + """Parse a dependency object from a dictionary.""" + if len(obj) != 1: + raise ValueError(f"Only one key allowed, found {set(obj.keys())}") + name, attributes = list(obj.items())[0] + allowed_keys = {"version", "index", "git", "ref"} + not_allowed_keys = set(attributes.keys()).difference(allowed_keys) + if len(not_allowed_keys) > 0: + raise ValueError(f"Not allowed keys: {not_allowed_keys}") + + version = attributes.get("version", "") + index = attributes.get("index", None) + git = attributes.get("git", None) + ref = attributes.get("ref", None) + + return Dependency(name=name, version=version, index=index, git=git, ref=ref) + + def to_json(self) -> Dict[str, Dict[str, str]]: + """Transform the object to JSON.""" + result = {} + if self.version != "": + result["version"] = self.version + if self.index is not None: + result["index"] = self.index + if self.git is not None: + result["git"] = cast(str, self.git) + if self.ref is not None: + result["ref"] = cast(str, self.ref) + return {self.name: result} + + def get_pip_install_args(self) -> List[str]: + """Get 'pip install' arguments.""" + name = self.name + index = self.index + git_url = self.git + revision = self.ref if self.ref is not None else DEFAULT_GIT_REF + version_constraint = str(self.version) + command: List[str] = [] + if index is not None: + command += ["-i", index] + if git_url is not None: + command += ["git+" + git_url + "@" + revision + "#egg=" + name] + else: + command += [name + version_constraint] + return command + + def __str__(self) -> str: + """Get the string representation.""" + return f"{self.__class__.__name__}(name='{self.name}', version='{self.version}', index='{self.index}', git='{self.git}', ref='{self.ref}')" + + def __eq__(self, other): + """Compare with another object.""" + return ( + isinstance(other, Dependency) + and self._name == other._name + and self._version == other._version + and self._index == other._index + and self._git == other._git + and self._ref == other._ref + ) + Dependencies = Dict[str, Dependency] """ @@ -99,6 +258,36 @@ We cannot have two items with the same package name since the keys of a YAML object form a set. """ + +def dependencies_from_json(obj: Dict[str, Dict]) -> Dependencies: + """ + Parse a JSON object to get an instance of Dependencies. + + :param obj: a dictionary whose keys are package names and values are dictionary with package specifications. + :return: a Dependencies object. + """ + return {key: Dependency.from_json({key: value}) for key, value in obj.items()} + + +def dependencies_to_json(dependencies: Dependencies) -> Dict[str, Dict]: + """ + Transform a Dependencies object into a JSON object. + + :param dependencies: an instance of "Dependencies" type. + :return: a dictionary whose keys are package names and + values are the JSON version of a Dependency object. + """ + result = {} + for key, value in dependencies.items(): + dep_to_json = value.to_json() + package_name = list(dep_to_json.items())[0][0] + enforce( + key == package_name, f"Names of dependency differ: {key} != {package_name}" + ) + result[key] = dep_to_json[key] + return result + + VersionInfoClass = semver.VersionInfo PackageVersionLike = Union[str, semver.VersionInfo] @@ -224,6 +413,16 @@ def to_configuration_type(self) -> PackageType: """Get package type for component type.""" return PackageType(self.value) + @staticmethod + def plurals() -> Collection[str]: + """ + Get the collection of type names, plural. + + >>> ComponentType.plurals() + ['protocols', 'connections', 'skills', 'contracts'] + """ + return list(map(lambda x: x.to_plural(), ComponentType)) + def to_plural(self) -> str: """ Get the plural version of the component type. @@ -443,6 +642,17 @@ def to_latest(self) -> "PublicId": """Return the same public id, but with latest version.""" return PublicId(self.author, self.name, self.LATEST_VERSION) + @classmethod + def is_valid_str(cls, public_id_string: str) -> bool: + """ + Check if a string is a public id. + + :param public_id_string: the public id in string format. + :return: bool indicating validity + """ + match = re.match(cls.PUBLIC_ID_REGEX, public_id_string) + return match is not None + @classmethod def from_str(cls, public_id_string: str) -> "PublicId": """ @@ -675,6 +885,10 @@ def __str__(self): package_type=self.package_type.value, public_id=self.public_id, ) + def __repr__(self): + """Get the object representation in string.""" + return f"PackageId{self.__str__()}" + def __eq__(self, other): """Compare with another object.""" return ( @@ -732,6 +946,11 @@ def prefix_import_path(self) -> str: self.public_id.author, self.component_type.to_plural(), self.public_id.name ) + @property + def json(self) -> Dict: + """Get the JSON representation.""" + return dict(**self.public_id.json, type=str(self.component_type)) + ProtocolId = PublicId ContractId = PublicId @@ -753,7 +972,7 @@ class PackageConfiguration(Configuration, ABC): default_configuration_filename: str package_type: PackageType - configurable_fields: Set[str] = set() + FIELDS_ALLOWED_TO_UPDATE: FrozenSet[str] = frozenset() def __init__( self, @@ -833,6 +1052,14 @@ def package_dependencies(self) -> Set[ComponentId]: """Get the package dependencies.""" return set() + def update(self, data: Dict) -> None: + """ + Update configuration with other data. + + :param data: the data to replace. + :return: None + """ + class ComponentConfiguration(PackageConfiguration, ABC): """Class to represent an agent component configuration.""" @@ -860,12 +1087,7 @@ def __init__( fingerprint, fingerprint_ignore_patterns, ) - self._pypi_dependencies = dependencies if dependencies is not None else {} - - @property - def pypi_dependencies(self) -> Dependencies: - """Get PyPI dependencies.""" - return self._pypi_dependencies + self.pypi_dependencies: Dependencies = dependencies if dependencies is not None else {} @property def component_type(self) -> ComponentType: @@ -916,21 +1138,14 @@ def check_aea_version(self): """ _check_aea_version(self) - def update(self, data: Dict) -> None: - """ - Update configuration with other data. - - :param data: the data to replace. - :return: None - """ - class ConnectionConfig(ComponentConfiguration): """Handle connection configuration.""" default_configuration_filename = DEFAULT_CONNECTION_CONFIG_FILE package_type = PackageType.CONNECTION - configurable_fields = {"config"} + + FIELDS_ALLOWED_TO_UPDATE: FrozenSet[str] = frozenset(["config"]) def __init__( self, @@ -1022,7 +1237,7 @@ def json(self) -> Dict: "restricted_to_protocols": sorted( map(str, self.restricted_to_protocols) ), - "dependencies": self.dependencies, + "dependencies": dependencies_to_json(self.dependencies), } ) @@ -1035,7 +1250,7 @@ def from_json(cls, obj: Dict): } excluded_protocols = obj.get("excluded_protocols", set()) excluded_protocols = {PublicId.from_str(id_) for id_ in excluded_protocols} - dependencies = obj.get("dependencies", {}) + dependencies = dependencies_from_json(obj.get("dependencies", {})) protocols = {PublicId.from_str(id_) for id_ in obj.get("protocols", set())} return ConnectionConfig( name=cast(str, obj.get("name")), @@ -1060,10 +1275,13 @@ def update(self, data: Dict) -> None: """ Update configuration with other data. - :param data: the data to replace. + This method does side-effect on the configuration object. + + :param data: the data to populate or replace. :return: None """ - self.config = data.get("config", self.config) + new_config = data.get("config", {}) + recursive_update(self.config, new_config) class ProtocolConfig(ComponentConfiguration): @@ -1072,6 +1290,8 @@ class ProtocolConfig(ComponentConfiguration): default_configuration_filename = DEFAULT_PROTOCOL_CONFIG_FILE package_type = PackageType.PROTOCOL + FIELDS_ALLOWED_TO_UPDATE: FrozenSet[str] = frozenset() + def __init__( self, name: str, @@ -1112,14 +1332,14 @@ def json(self) -> Dict: "aea_version": self.aea_version, "fingerprint": self.fingerprint, "fingerprint_ignore_patterns": self.fingerprint_ignore_patterns, - "dependencies": self.dependencies, + "dependencies": dependencies_to_json(self.dependencies), } ) @classmethod def from_json(cls, obj: Dict): """Initialize from a JSON object.""" - dependencies = cast(Dependencies, obj.get("dependencies", {})) + dependencies = dependencies_from_json(obj.get("dependencies", {})) return ProtocolConfig( name=cast(str, obj.get("name")), author=cast(str, obj.get("author")), @@ -1166,7 +1386,14 @@ class SkillConfig(ComponentConfiguration): default_configuration_filename = DEFAULT_SKILL_CONFIG_FILE package_type = PackageType.SKILL - configurable_fields = {"handlers", "behaviours", "models"} + + FIELDS_ALLOWED_TO_UPDATE: FrozenSet[str] = frozenset( + ["behaviours", "handlers", "models", "is_abstract"] + ) + FIELDS_WITH_NESTED_FIELDS: FrozenSet[str] = frozenset( + ["behaviours", "handlers", "models"] + ) + NESTED_FIELDS_ALLOWED_TO_UPDATE: FrozenSet[str] = frozenset(["args"]) def __init__( self, @@ -1250,13 +1477,10 @@ def json(self) -> Dict: "behaviours": {key: b.json for key, b in self.behaviours.read_all()}, "handlers": {key: h.json for key, h in self.handlers.read_all()}, "models": {key: m.json for key, m in self.models.read_all()}, - "dependencies": self.dependencies, + "dependencies": dependencies_to_json(self.dependencies), "is_abstract": self.is_abstract, } ) - if result["is_abstract"] is False: - result.pop("is_abstract") - return result @classmethod @@ -1282,7 +1506,7 @@ def from_json(cls, obj: Dict): skills = cast( List[PublicId], [PublicId.from_str(id_) for id_ in obj.get("skills", [])], ) - dependencies = cast(Dependencies, obj.get("dependencies", {})) + dependencies = dependencies_from_json(obj.get("dependencies", {})) description = cast(str, obj.get("description", "")) skill_config = SkillConfig( name=name, @@ -1321,17 +1545,45 @@ def update(self, data: Dict) -> None: :param data: the data to replace. :return: None """ - for behaviour_id, behaviour_data in data.get("behaviours", {}).items(): - behaviour_config = SkillComponentConfiguration.from_json(behaviour_data) - self.behaviours.update(behaviour_id, behaviour_config) - for handler_id, handler_data in data.get("handlers", {}).items(): - handler_config = SkillComponentConfiguration.from_json(handler_data) - self.handlers.update(handler_id, handler_config) + def _update_skill_component_config(type_plural: str, data: Dict): + """ + Update skill component configurations with new data. - for model_id, model_data in data.get("models", {}).items(): - model_config = SkillComponentConfiguration.from_json(model_data) - self.models.update(model_id, model_config) + Also check that there are not undeclared components. + """ + registry: CRUDCollection[SkillComponentConfiguration] = getattr( + self, type_plural + ) + new_component_config = data.get(type_plural, {}) + all_component_names = dict(registry.read_all()) + + new_skill_component_names = set(new_component_config.keys()).difference( + set(all_component_names.keys()) + ) + if len(new_skill_component_names) > 0: + raise ValueError( + f"The custom configuration for skill {self.public_id} includes new {type_plural}: {new_skill_component_names}. This is not allowed." + ) + + for component_name, component_data in data.get(type_plural, {}).items(): + component_config = cast( + SkillComponentConfiguration, registry.read(component_name) + ) + component_data_keys = set(component_data.keys()) + unallowed_keys = component_data_keys.difference( + SkillConfig.NESTED_FIELDS_ALLOWED_TO_UPDATE + ) + if len(unallowed_keys) > 0: + raise ValueError( + f"These fields of skill component configuration '{component_name}' of skill '{self.public_id}' are not allowed to change: {unallowed_keys}." + ) + recursive_update(component_config.args, component_data.get("args", {})) + + _update_skill_component_config("behaviours", data) + _update_skill_component_config("handlers", data) + _update_skill_component_config("models", data) + self.is_abstract = data.get("is_abstract", self.is_abstract) class AgentConfig(PackageConfiguration): @@ -1340,6 +1592,27 @@ class AgentConfig(PackageConfiguration): default_configuration_filename = DEFAULT_AEA_CONFIG_FILE package_type = PackageType.AGENT + FIELDS_ALLOWED_TO_UPDATE: FrozenSet[str] = frozenset( + [ + "description", + "registry_path", + "logging_config", + "private_key_paths", + "connection_private_key_paths", + "loop_mode", + "runtime_mode", + "execution_timeout", + "timeout", + "period", + "max_reactions", + "skill_exception_policy", + "connection_exception_policy", + "default_connection", + "default_ledger", + "default_routing", + ] + ) + def __init__( self, agent_name: str, @@ -1412,6 +1685,7 @@ def __init__( ) # type: Dict[PublicId, PublicId] self.loop_mode = loop_mode self.runtime_mode = runtime_mode + # this attribute will be set through the setter below self._component_configurations: Dict[ComponentId, Dict] = {} self.component_configurations = ( component_configurations if component_configurations is not None else {} @@ -1431,12 +1705,19 @@ def component_configurations(self, d: Dict[ComponentId, Dict]) -> None: PackageType.CONTRACT: self.contracts, PackageType.SKILL: self.skills, } - for component_id, _ in d.items(): + for component_id, component_configuration in d.items(): enforce( component_id.public_id in package_type_to_set[component_id.package_type], f"Component {component_id} not declared in the agent configuration.", ) + from aea.configurations.loader import ( # pylint: disable=import-outside-toplevel,cyclic-import + ConfigLoader, + ) + + ConfigLoader.validate_component_configuration( + component_id, component_configuration + ) self._component_configurations = d @property @@ -1516,16 +1797,18 @@ def default_ledger(self, ledger_id: str): def component_configurations_json(self) -> List[OrderedDict]: """Get the component configurations in JSON format.""" - return [ - OrderedDict( - name=component_id.name, - author=component_id.author, - version=component_id.version, - type=component_id.component_type.value, - **obj, + result: List[OrderedDict] = [] + for component_id, config in self.component_configurations.items(): + result.append( + OrderedDict( + name=component_id.name, + author=component_id.author, + version=component_id.version, + type=str(component_id.component_type), + **config, + ) ) - for component_id, obj in self.component_configurations.items() - ] + return result @property def json(self) -> Dict: @@ -1653,6 +1936,37 @@ def from_json(cls, obj: Dict): return agent_config + def update(self, data: Dict) -> None: + """ + Update configuration with other data. + + To update the component parts, populate the field "component_configurations" as a + mapping from ComponentId to configurations. + + :param data: the data to replace. + :return: None + """ + data = copy(data) + # update component parts + new_component_configurations: Dict = data.pop("component_configurations", {}) + result: Dict[ComponentId, Dict] = copy(self.component_configurations) + for component_id, obj in new_component_configurations.items(): + if component_id not in result: + result[component_id] = obj + else: + recursive_update(result[component_id], obj) + self.component_configurations = result + + # update other fields + for item_id, value in data.get("private_key_paths", {}).items(): + self.private_key_paths.update(item_id, value) + + for item_id, value in data.get("connection_private_key_paths", {}).items(): + self.connection_private_key_paths.update(item_id, value) + + self.logging_config = data.get("logging_config", self.logging_config) + self.registry_path = data.get("registry_path", self.registry_path) + class SpeechActContentConfig(Configuration): """Handle a speech_act content configuration.""" @@ -1804,6 +2118,8 @@ class ContractConfig(ComponentConfiguration): default_configuration_filename = DEFAULT_CONTRACT_CONFIG_FILE package_type = PackageType.CONTRACT + FIELDS_ALLOWED_TO_UPDATE: FrozenSet[str] = frozenset([]) + def __init__( self, name: str, @@ -1884,14 +2200,16 @@ def json(self) -> Dict: "fingerprint_ignore_patterns": self.fingerprint_ignore_patterns, "class_name": self.class_name, "contract_interface_paths": self.contract_interface_paths, - "dependencies": self.dependencies, + "dependencies": dependencies_to_json(self.dependencies), } ) @classmethod def from_json(cls, obj: Dict): """Initialize from a JSON object.""" - dependencies = cast(Dependencies, obj.get("dependencies", {})) + dependencies = cast( + Dependencies, dependencies_from_json(obj.get("dependencies", {})) + ) return ContractConfig( name=cast(str, obj.get("name")), author=cast(str, obj.get("author")), diff --git a/aea/configurations/constants.py b/aea/configurations/constants.py index 128ffd8080..435a026a02 100644 --- a/aea/configurations/constants.py +++ b/aea/configurations/constants.py @@ -26,13 +26,13 @@ from aea.crypto.helpers import PRIVATE_KEY_PATH_SCHEMA -DEFAULT_CONNECTION = PublicId.from_str("fetchai/stub:0.9.0") -DEFAULT_PROTOCOL = PublicId.from_str("fetchai/default:0.5.0") -DEFAULT_SKILL = PublicId.from_str("fetchai/error:0.5.0") +DEFAULT_CONNECTION = PublicId.from_str("fetchai/stub:0.11.0") +DEFAULT_PROTOCOL = PublicId.from_str("fetchai/default:0.7.0") +DEFAULT_SKILL = PublicId.from_str("fetchai/error:0.7.0") DEFAULT_LEDGER = FetchAICrypto.identifier DEFAULT_PRIVATE_KEY_FILE = PRIVATE_KEY_PATH_SCHEMA.format(DEFAULT_LEDGER) DEFAULT_REGISTRY_PATH = DRP DEFAULT_LICENSE = DL -SIGNING_PROTOCOL = PublicId.from_str("fetchai/signing:0.3.0") -STATE_UPDATE_PROTOCOL = PublicId.from_str("fetchai/state_update:0.3.0") +SIGNING_PROTOCOL = PublicId.from_str("fetchai/signing:0.5.0") +STATE_UPDATE_PROTOCOL = PublicId.from_str("fetchai/state_update:0.5.0") LOCAL_PROTOCOLS = [DEFAULT_PROTOCOL, SIGNING_PROTOCOL, STATE_UPDATE_PROTOCOL] diff --git a/aea/configurations/loader.py b/aea/configurations/loader.py index 8a5c1e84d0..608c643d40 100644 --- a/aea/configurations/loader.py +++ b/aea/configurations/loader.py @@ -22,15 +22,13 @@ import inspect import json import os -import re from copy import deepcopy from pathlib import Path -from typing import Dict, Generic, List, TextIO, Tuple, Type, TypeVar, Union, cast +from typing import Dict, Generic, List, TextIO, Type, TypeVar, Union, cast import jsonschema import yaml from jsonschema import Draft4Validator -from yaml import SafeLoader from aea.configurations.base import ( AgentConfig, @@ -45,13 +43,17 @@ PublicId, SkillConfig, ) -from aea.exceptions import enforce -from aea.helpers.base import yaml_dump, yaml_dump_all, yaml_load, yaml_load_all +from aea.helpers.yaml_utils import yaml_dump, yaml_dump_all, yaml_load, yaml_load_all _CUR_DIR = os.path.dirname(inspect.getfile(inspect.currentframe())) # type: ignore _SCHEMAS_DIR = os.path.join(_CUR_DIR, "schemas") +_PREFIX_BASE_CONFIGURABLE_PARTS = "base" +_SCHEMAS_CONFIGURABLE_PARTS_DIRNAME = "configurable_parts" +_POSTFIX_CUSTOM_CONFIG = "-custom_config.json" +STARTING_INDEX_CUSTOM_CONFIGS = 1 + T = TypeVar( "T", AgentConfig, @@ -77,37 +79,74 @@ def make_jsonschema_base_uri(base_uri_path: Path) -> str: return root_path -class ConfigLoader(Generic[T]): - """This class implement parsing, serialization and validation functionalities for the 'aea' configuration files.""" +def _get_path_to_custom_config_schema_from_type(component_type: ComponentType) -> str: + """ + Get the path to the custom config schema - def __init__(self, schema_filename: str, configuration_class: Type[T]): + :param component_type: a component type. + :return: the path to the JSON schema file. + """ + path_prefix: Path = Path(_SCHEMAS_DIR) / _SCHEMAS_CONFIGURABLE_PARTS_DIRNAME + if component_type in {ComponentType.SKILL, ComponentType.CONNECTION}: + filename_prefix = component_type.value + else: + filename_prefix = _PREFIX_BASE_CONFIGURABLE_PARTS + full_path = path_prefix / (filename_prefix + _POSTFIX_CUSTOM_CONFIG) + return str(full_path) + + +class BaseConfigLoader: + """Base class for configuration loader classes.""" + + def __init__(self, schema_filename: str): """ - Initialize the parser for configuration files. + Initialize the base configuration loader. - :param schema_filename: the path to the JSON-schema file in 'aea/configurations/schemas'. - :param configuration_class: the configuration class (e.g. AgentConfig, SkillConfig etc.) + :param schema_filename: the path to the schema. """ base_uri = Path(_SCHEMAS_DIR) self._schema = json.load((base_uri / schema_filename).open()) root_path = make_jsonschema_base_uri(base_uri) self._resolver = jsonschema.RefResolver(root_path, self._schema) self._validator = Draft4Validator(self._schema, resolver=self._resolver) - self._configuration_class = configuration_class # type: Type[T] @property def validator(self) -> Draft4Validator: """Get the json schema validator.""" return self._validator + def validate(self, json_data: Dict) -> None: + """ + Validate a JSON object. + + :param json_data: the JSON data. + :return: None. + """ + self.validator.validate(json_data) + @property def required_fields(self) -> List[str]: """ - Get required fields. + Get the required fields. :return: list of required fields. """ return self._schema["required"] + +class ConfigLoader(Generic[T], BaseConfigLoader): + """Parsing, serialization and validation for package configuration files.""" + + def __init__(self, schema_filename: str, configuration_class: Type[T]): + """ + Initialize the parser for configuration files. + + :param schema_filename: the path to the JSON-schema file in 'aea/configurations/schemas'. + :param configuration_class: the configuration class (e.g. AgentConfig, SkillConfig etc.) + """ + super().__init__(schema_filename) + self._configuration_class = configuration_class # type: Type[T] + @property def configuration_class(self) -> Type[T]: """Get the configuration class of the loader.""" @@ -153,14 +192,29 @@ def load_protocol_specification(self, file_pointer: TextIO) -> T: def validate(self, json_data: Dict) -> None: """ - Validate a JSON object. + Validate a JSON object against the right JSON schema. :param json_data: the JSON data. :return: None. """ if self.configuration_class.package_type == PackageType.AGENT: json_data_copy = deepcopy(json_data) - json_data_copy.pop("component_configurations", None) + + # validate component_configurations + component_configurations = json_data_copy.pop( + "component_configurations", {} + ) + for idx, component_configuration_json in enumerate( + component_configurations + ): + component_id = self._split_component_id_and_config( + idx, component_configuration_json + ) + self.validate_component_configuration( + component_id, component_configuration_json + ) + + # validate agent config self._validator.validate(instance=json_data_copy) else: self._validator.validate(instance=json_data) @@ -196,26 +250,6 @@ def from_configuration_type( configuration_type = PackageType(configuration_type) return ConfigLoaders.from_package_type(configuration_type) - def _validate(self, json_data: Dict) -> None: - """ - Validate a configuration file. - - :param json_data: the JSON object of the configuration file to validate. - :return: None - :raises ValidationError: if the file doesn't comply with the JSON schema. - | ValueError: if other consistency checks fail. - """ - # this might raise ValidationError. - self.validate(json_data) - - expected_type = self.configuration_class.package_type - if expected_type != PackageType.AGENT and "type" in json_data: - actual_type = PackageType(json_data["type"]) - if expected_type != actual_type: - raise ValueError( - f"The field type is not correct: expected {expected_type}, found {actual_type}." - ) - def _load_component_config(self, file_pointer: TextIO) -> T: """Load a component configuration.""" configuration_file_json = yaml_load(file_pointer) @@ -223,20 +257,26 @@ def _load_component_config(self, file_pointer: TextIO) -> T: def _load_from_json(self, configuration_file_json: Dict) -> T: """Load component configuration from JSON object.""" - self._validate(configuration_file_json) + self.validate(configuration_file_json) key_order = list(configuration_file_json.keys()) configuration_obj = self.configuration_class.from_json(configuration_file_json) configuration_obj._key_order = key_order # pylint: disable=protected-access return configuration_obj - def _load_agent_config(self, file_pointer: TextIO) -> AgentConfig: - """Load an agent configuration.""" - configuration_file_jsons = yaml_load_all(file_pointer) + def load_agent_config_from_json( + self, configuration_json: List[Dict] + ) -> AgentConfig: + """ + Load agent configuration from configuration json data. - if len(configuration_file_jsons) == 0: + :param configuration_json: list of dicts with aea configuration + + :return: AgentConfig instance + """ + if len(configuration_json) == 0: raise ValueError("Agent configuration file was empty.") - agent_config_json = configuration_file_jsons[0] - self._validate(agent_config_json) + agent_config_json = configuration_json[0] + self.validate(agent_config_json) key_order = list(agent_config_json.keys()) agent_configuration_obj = cast( AgentConfig, self.configuration_class.from_json(agent_config_json) @@ -245,28 +285,48 @@ def _load_agent_config(self, file_pointer: TextIO) -> AgentConfig: key_order ) + component_configurations = self._get_component_configurations( + configuration_json + ) + agent_configuration_obj.component_configurations = component_configurations + return agent_configuration_obj + + def _get_component_configurations( + self, configuration_file_jsons + ) -> Dict[ComponentId, Dict]: + """ + Get the component configurations from the tail pages of the aea-config.yaml file. + + :param configuration_file_jsons: the JSON objects of the custom configurations of a aea-config.yaml file. + :return: a dictionary whose keys are component ids and values are the configurations. + """ component_configurations: Dict[ComponentId, Dict] = {} # load the other components. - for i, component_configuration_json in enumerate(configuration_file_jsons[1:]): - component_id, component_config = self._process_component_section( + for i, component_configuration_json in enumerate( + configuration_file_jsons[STARTING_INDEX_CUSTOM_CONFIGS:] + ): + component_id = self._process_component_section( i, component_configuration_json ) if component_id in component_configurations: raise ValueError( f"Configuration of component {component_id} occurs more than once." ) - component_configurations[component_id] = component_config + component_configurations[component_id] = component_configuration_json + return component_configurations - agent_configuration_obj.component_configurations = component_configurations - return agent_configuration_obj + def _load_agent_config(self, file_pointer: TextIO) -> AgentConfig: + """Load an agent configuration.""" + configuration_file_jsons = yaml_load_all(file_pointer) + return self.load_agent_config_from_json(configuration_file_jsons) def _dump_agent_config( self, configuration: AgentConfig, file_pointer: TextIO ) -> None: """Dump agent configuration.""" agent_config_part = configuration.ordered_json + self.validate(agent_config_part) agent_config_part.pop("component_configurations") - self.validator.validate(instance=agent_config_part) result = [agent_config_part] + configuration.component_configurations_json() yaml_dump_all(result, file_pointer) @@ -277,8 +337,8 @@ def _dump_component_config(self, configuration: T, file_pointer: TextIO) -> None yaml_dump(result, file_pointer) def _process_component_section( - self, i: int, component_configuration_json: Dict - ) -> Tuple[ComponentId, Dict]: + self, component_index: int, component_configuration_json: Dict + ) -> ComponentId: """ Process a component configuration in an agent configuration file. @@ -287,50 +347,50 @@ def _process_component_section( - validate the component configuration - check that there are only configurable fields - :param i: the index of the component in the file. + :param component_index: the index of the component in the file. :param component_configuration_json: the JSON object. :return: the processed component configuration. """ - component_id, result = self._split_component_id_and_config( - i, component_configuration_json + component_id = self._split_component_id_and_config( + component_index, component_configuration_json + ) + self.validate_component_configuration( + component_id, component_configuration_json ) - self._validate_component_configuration(component_id, result) - self._check_only_configurable_fields(component_id, result) - return component_id, result + return component_id @staticmethod def _split_component_id_and_config( - i: int, component_configuration_json: Dict - ) -> Tuple[ComponentId, Dict]: + component_index: int, component_configuration_json: Dict + ) -> ComponentId: """ Split component id and configuration. - :param i: the position of the component configuration in the agent config file.. + :param component_index: the position of the component configuration in the agent config file.. :param component_configuration_json: the JSON object to process. :return: the component id and the configuration object. :raises ValueError: if the component id cannot be extracted. """ - result = deepcopy(component_configuration_json) # author, name, version, type are mandatory fields missing_fields = {"author", "name", "version", "type"}.difference( component_configuration_json.keys() ) if len(missing_fields) > 0: raise ValueError( - f"There are missing fields in component id {i + 1}: {missing_fields}." + f"There are missing fields in component id {component_index + 1}: {missing_fields}." ) - component_name = result.pop("name") - component_author = result.pop("author") - component_version = result.pop("version") - component_type = ComponentType(result.pop("type")) + component_name = component_configuration_json.pop("name") + component_author = component_configuration_json.pop("author") + component_version = component_configuration_json.pop("version") + component_type = ComponentType(component_configuration_json.pop("type")) component_public_id = PublicId( component_author, component_name, component_version ) component_id = ComponentId(component_type, component_public_id) - return component_id, result + return component_id @staticmethod - def _validate_component_configuration( + def validate_component_configuration( component_id: ComponentId, configuration: Dict ) -> None: """ @@ -343,56 +403,17 @@ def _validate_component_configuration( :return: None :raises ValueError: if the configuration is not valid. """ - # we need to populate the required fields to validate the configurations. - temporary_config = deepcopy(configuration) - # common to every package - temporary_config["name"] = component_id.name - temporary_config["author"] = component_id.author - temporary_config["version"] = component_id.version - temporary_config["license"] = "some_license" - temporary_config["aea_version"] = "0.1.0" - if component_id.component_type == ComponentType.PROTOCOL: - pass # no other required field - elif component_id.component_type == ComponentType.CONNECTION: - temporary_config["class_name"] = "SomeClassName" - temporary_config["protocols"] = [] - temporary_config.setdefault("config", {}) - elif component_id.component_type == ComponentType.CONTRACT: - temporary_config["class_name"] = "SomeClassName" - elif component_id.component_type == ComponentType.SKILL: - temporary_config["protocols"] = [] - temporary_config["contracts"] = [] - temporary_config["skills"] = [] - loader = ConfigLoaders.from_package_type(component_id.package_type) + schema_file = _get_path_to_custom_config_schema_from_type( + component_id.component_type + ) try: - loader._load_from_json(temporary_config) # pylint: disable=protected-access + BaseConfigLoader(schema_file).validate( + dict(**component_id.json, **configuration) + ) except jsonschema.ValidationError as e: raise ValueError( - f"Configuration of component {component_id} is not valid." + f"Configuration of component {component_id} is not valid. {e}" ) from e - # all good! - - @staticmethod - def _check_only_configurable_fields( - component_id: ComponentId, configuration: Dict - ) -> None: - """ - Check that there are only configurable fields. - - :param component_id: the component id. - :param configuration: the configuration object. - :return: None - """ - configurable_fields = ( - component_id.package_type.configuration_class().configurable_fields - ) - non_configurable_fields = set(configuration.keys()).difference( - configurable_fields - ) - enforce( - len(non_configurable_fields) == 0, - f"Bad configuration for component {component_id}: {non_configurable_fields} are non-configurable fields.", - ) class ConfigLoaders: @@ -474,26 +495,3 @@ def _load_configuration_object( ) ) return configuration_object - - -def _config_loader(): - envvar_matcher = re.compile(r"\${([^}^{]+)\}") - - def envvar_constructor(_loader, node): # pragma: no cover - """Extract the matched value, expand env variable, and replace the match.""" - node_value = node.value - match = envvar_matcher.match(node_value) - env_var = match.group()[2:-1] - - # check for defaults - var_name, default_value = env_var.split(":") - var_name = var_name.strip() - default_value = default_value.strip() - var_value = os.getenv(var_name, default_value) - return var_value + node_value[match.end() :] - - yaml.add_implicit_resolver("!envvar", envvar_matcher, None, SafeLoader) - yaml.add_constructor("!envvar", envvar_constructor, SafeLoader) - - -_config_loader() diff --git a/aea/configurations/project.py b/aea/configurations/project.py new file mode 100644 index 0000000000..5fcfc53445 --- /dev/null +++ b/aea/configurations/project.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2020 Fetch.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 implementation of AEA agents project configuiration.""" +import os +from shutil import rmtree +from typing import Dict, List, Set + +from aea.aea import AEA +from aea.aea_builder import AEABuilder +from aea.cli.registry.fetch import fetch_agent +from aea.cli.utils.context import Context +from aea.configurations.base import PublicId + + +class Project: + """Agent project representation.""" + + def __init__(self, public_id: PublicId, path: str): + """Init project with public_id and project's path.""" + self.public_id: PublicId = public_id + self.path: str = path + self.agents: Set[str] = set() + + @classmethod + def load(cls, working_dir: str, public_id: PublicId) -> "Project": + """Load project with given public_id to working_dir.""" + ctx = Context(cwd=working_dir) + path = os.path.join(working_dir, public_id.author, public_id.name) + fetch_agent( + ctx, public_id, target_dir=os.path.join(public_id.author, public_id.name) + ) + return cls(public_id, path) + + def remove(self) -> None: + """Remove project, do cleanup.""" + rmtree(self.path) + + +class AgentAlias: + """Agent alias representation.""" + + def __init__( + self, + project: Project, + agent_name: str, + config: List[Dict], + agent: AEA, + builder: AEABuilder, + ): + """Init agent alias with project, config, name, agent, builder.""" + self.project = project + self.config = config + self.agent_name = agent_name + self.agent = agent + self.builder = builder + self.project.agents.add(self.agent_name) + + def remove_from_project(self): + """Remove agent alias from project.""" + self.project.agents.remove(self.agent_name) diff --git a/aea/configurations/pypi.py b/aea/configurations/pypi.py index 5dd0bd0953..4324c79ec1 100644 --- a/aea/configurations/pypi.py +++ b/aea/configurations/pypi.py @@ -21,7 +21,7 @@ """This module contains a checker for PyPI version consistency.""" import operator from collections import defaultdict -from typing import Dict, Set, cast +from typing import Dict, List, Set, cast from packaging.specifiers import Specifier, SpecifierSet from packaging.version import InvalidVersion, Version @@ -34,6 +34,47 @@ def and_(s1: SpecifierSet, s2: SpecifierSet): return operator.and_(s1, s2) +def _handle_compatibility_operator( + all_specifiers: List[Specifier], + operator_to_specifiers: Dict[str, Set[Specifier]], + specifier: Specifier, +) -> None: + """ + Handle a specifier with operator '~='. + + Split specifier of the form "~=" in two specifiers: + - >= + - < + Also handle micro-numbers, i.e. "~=" + (see last examples of https://www.python.org/dev/peps/pep-0440/#compatible-release) + + :param all_specifiers: the list of all specifiers (to be populated). + :param operator_to_specifiers: a mapping from operator to specifiers (to be populated). + :param specifier: the specifier to process. + :return: None + """ + spec_version = Version(specifier.version) + base_version = spec_version.base_version + parts = base_version.split(".") + index_to_update = -2 + if ( + spec_version.is_prerelease + or spec_version.is_devrelease + or spec_version.is_postrelease + ): + # if it is a pre-release, ignore the suffix. + index_to_update += 1 + parts = parts[:-1] + # bump second-to-last part + parts[index_to_update] = str(int(parts[index_to_update]) + 1) + upper_version = Version(".".join(parts)) + spec_1 = Specifier(">=" + str(spec_version)) + spec_2 = Specifier("<" + str(upper_version)) + all_specifiers.extend([spec_1, spec_2]) + operator_to_specifiers[spec_1.operator].add(spec_1) + operator_to_specifiers[spec_2.operator].add(spec_2) + + def is_satisfiable(specifier_set: SpecifierSet) -> bool: """ Check if the specifier set is satisfiable. @@ -68,7 +109,7 @@ def is_satisfiable(specifier_set: SpecifierSet) -> bool: :return: False if the constraints are surely non-satisfiable, True if we don't know. """ # group single specifiers by operator - all_specifiers = [] + all_specifiers: List[Specifier] = [] operator_to_specifiers: Dict[str, Set[Specifier]] = defaultdict(set) # pre-processing for specifier in list(specifier_set): @@ -80,20 +121,11 @@ def is_satisfiable(specifier_set: SpecifierSet) -> bool: except InvalidVersion: continue - # split specifier "~=" in two specifiers: - # - >= - # - < - # this is not the full story. we should check the version number - # up to the last zero, which might be the micro number. - # e.g. see last examples of https://www.python.org/dev/peps/pep-0440/#compatible-release + # handle specifiers with '~=' operators. if specifier.operator == "~=": - spec_version = Version(specifier.version) - upper_major_version = Version(str(spec_version.major + 1)) - spec_1 = Specifier(">=" + str(spec_version)) - spec_2 = Specifier("<" + str(upper_major_version)) - all_specifiers.extend([spec_1, spec_2]) - operator_to_specifiers[spec_1.operator].add(spec_1) - operator_to_specifiers[spec_2.operator].add(spec_2) + _handle_compatibility_operator( + all_specifiers, operator_to_specifiers, specifier + ) else: all_specifiers.append(specifier) operator_to_specifiers[specifier.operator].add(specifier) @@ -192,12 +224,12 @@ def is_simple_dep(dep: Dependency) -> bool: :param dep: the dependency :return: whether it is a simple dependency or not """ - return len(dep) == 0 or len(dep) == 1 and "version" in dep + return dep.index is None and dep.git is None def to_set_specifier(dep: Dependency) -> SpecifierSet: """Get the set specifier. It assumes to be a simple dependency (see above).""" - return dep["version"] + return SpecifierSet(dep.version) def merge_dependencies(dep1: Dependencies, dep2: Dependencies) -> Dependencies: @@ -216,9 +248,20 @@ def merge_dependencies(dep1: Dependencies, dep2: Dependencies) -> Dependencies: for pkg_name, info in dep2.items(): if not is_simple_dep(info): continue - new_specifier = SpecifierSet(info.get("version", "")) - old_specifier = SpecifierSet(result.get(pkg_name, {}).get("version", "")) + new_specifier = SpecifierSet(info.version) + old_specifier = ( + SpecifierSet(result[pkg_name].version) + if pkg_name in result + else SpecifierSet("") + ) combined_specifier = and_(new_specifier, old_specifier) - result[pkg_name] = {"version": str(combined_specifier)} + new_info = Dependency( + name=info.name, + version=combined_specifier, + index=info.index, + git=info.git, + ref=info.ref, + ) + result[pkg_name] = new_info return result diff --git a/aea/configurations/schemas/aea-config_schema.json b/aea/configurations/schemas/aea-config_schema.json index f82b322c8d..cd428abe2f 100644 --- a/aea/configurations/schemas/aea-config_schema.json +++ b/aea/configurations/schemas/aea-config_schema.json @@ -130,7 +130,7 @@ "loop_mode": { "$ref": "definitions.json#/definitions/loop_mode" }, - "runtime_mode": { + "runtime_mode": { "$ref": "definitions.json#/definitions/runtime_mode" } } diff --git a/aea/configurations/schemas/configurable_parts/base-custom_config.json b/aea/configurations/schemas/configurable_parts/base-custom_config.json new file mode 100644 index 0000000000..7e44b416bf --- /dev/null +++ b/aea/configurations/schemas/configurable_parts/base-custom_config.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Base schema for a custom component configuration in the agent configuration file.", + "additionalProperties": false, + "required": [ + "name", + "author", + "version", + "type" + ], + "properties": { + "name": { + "$ref": "definitions.json#/definitions/resource_name" + }, + "author": { + "$ref": "definitions.json#/definitions/author" + }, + "version": { + "$ref": "definitions.json#/definitions/package_version" + }, + "type": { + "$ref": "definitions.json#/definitions/component_type" + } + } +} diff --git a/aea/configurations/schemas/configurable_parts/connection-custom_config.json b/aea/configurations/schemas/configurable_parts/connection-custom_config.json new file mode 100644 index 0000000000..a81b002836 --- /dev/null +++ b/aea/configurations/schemas/configurable_parts/connection-custom_config.json @@ -0,0 +1,28 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Schema for the configurable part of a connection configuration in the agent configuration file.", + "additionalProperties": false, + "required": [ + "name", + "author", + "version", + "type" + ], + "properties": { + "name": { + "$ref": "definitions.json#/definitions/resource_name" + }, + "author": { + "$ref": "definitions.json#/definitions/author" + }, + "version": { + "$ref": "definitions.json#/definitions/package_version" + }, + "type": { + "$ref": "definitions.json#/definitions/component_type" + }, + "config": { + "type": "object" + } + } +} diff --git a/aea/configurations/schemas/configurable_parts/skill-custom_config.json b/aea/configurations/schemas/configurable_parts/skill-custom_config.json new file mode 100644 index 0000000000..b5ab051d3c --- /dev/null +++ b/aea/configurations/schemas/configurable_parts/skill-custom_config.json @@ -0,0 +1,103 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Schema for the configurable part of a skill configuration in the agent configuration file.", + "additionalProperties": false, + "required": [ + "name", + "author", + "version", + "type" + ], + "properties": { + "name": { + "$ref": "definitions.json#/definitions/resource_name" + }, + "author": { + "$ref": "definitions.json#/definitions/author" + }, + "version": { + "$ref": "definitions.json#/definitions/package_version" + }, + "type": { + "$ref": "definitions.json#/definitions/component_type" + }, + "handlers": { + "$ref": "#/definitions/handlers" + }, + "behaviours": { + "$ref": "#/definitions/behaviours" + }, + "models": { + "$ref": "#/definitions/models" + }, + "is_abstract": { + "$ref": "skill-config_schema.json#/properties/is_abstract" + } + }, + "definitions": { + "handlers": { + "type": "object", + "additionalProperties": false, + "uniqueItems": true, + "patternProperties": { + "^[^\\d\\W]\\w*\\Z": { + "$ref": "#/definitions/handler" + } + } + }, + "behaviours": { + "type": "object", + "uniqueItems": true, + "patternProperties": { + "^[^\\d\\W]\\w*\\Z": { + "$ref": "#/definitions/behaviour" + } + } + }, + "models": { + "type": "object", + "uniqueItems": true, + "patternProperties": { + "^[^\\d\\W]\\w*\\Z": { + "$ref": "#/definitions/model" + } + } + }, + "behaviour": { + "type": "object", + "additionalProperties": false, + "required": [ + "args" + ], + "properties": { + "args": { + "type": "object" + } + } + }, + "handler": { + "type": "object", + "additionalProperties": false, + "required": [ + "args" + ], + "properties": { + "args": { + "type": "object" + } + } + }, + "model": { + "type": "object", + "additionalProperties": false, + "required": [ + "args" + ], + "properties": { + "args": { + "type": "object" + } + } + } + } +} diff --git a/aea/configurations/schemas/connection-config_schema.json b/aea/configurations/schemas/connection-config_schema.json index 50c9d9d5e2..011f96bf3b 100644 --- a/aea/configurations/schemas/connection-config_schema.json +++ b/aea/configurations/schemas/connection-config_schema.json @@ -7,6 +7,7 @@ "name", "author", "version", + "type", "license", "aea_version", "class_name", @@ -24,7 +25,7 @@ "$ref": "definitions.json#/definitions/package_version" }, "type": { - "$ref": "definitions.json#/definitions/component_type" + "enum": ["connection"] }, "license": { "$ref": "definitions.json#/definitions/license" diff --git a/aea/configurations/schemas/contract-config_schema.json b/aea/configurations/schemas/contract-config_schema.json index 0ad8333401..cf5766141e 100644 --- a/aea/configurations/schemas/contract-config_schema.json +++ b/aea/configurations/schemas/contract-config_schema.json @@ -7,6 +7,7 @@ "name", "author", "version", + "type", "license", "aea_version", "class_name" @@ -22,7 +23,7 @@ "$ref": "definitions.json#/definitions/package_version" }, "type": { - "$ref": "definitions.json#/definitions/component_type" + "enum": ["contract"] }, "license": { "$ref": "definitions.json#/definitions/license" @@ -51,9 +52,6 @@ } } }, - "path_to_contract_interface": { - "type": "string" - }, "class_name": { "type": "string" } diff --git a/aea/configurations/schemas/definitions.json b/aea/configurations/schemas/definitions.json index 6f956b5d10..c723ad8584 100644 --- a/aea/configurations/schemas/definitions.json +++ b/aea/configurations/schemas/definitions.json @@ -79,7 +79,7 @@ }, "public_id": { "type": "string", - "pattern": "^[a-zA-Z0-9_]*/[a-zA-Z_][a-zA-Z0-9_]*:(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-]+)*))?)$" + "pattern": "^[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-]+)*))?$" }, "version_specifiers": { "type": "string", diff --git a/aea/configurations/schemas/protocol-config_schema.json b/aea/configurations/schemas/protocol-config_schema.json index ba34921514..a6f23f63c6 100644 --- a/aea/configurations/schemas/protocol-config_schema.json +++ b/aea/configurations/schemas/protocol-config_schema.json @@ -7,6 +7,7 @@ "name", "author", "version", + "type", "license", "aea_version" ], @@ -21,7 +22,7 @@ "$ref": "definitions.json#/definitions/package_version" }, "type": { - "$ref": "definitions.json#/definitions/component_type" + "enum": ["protocol"] }, "license": { "$ref": "definitions.json#/definitions/license" diff --git a/aea/configurations/schemas/skill-config_schema.json b/aea/configurations/schemas/skill-config_schema.json index bfb97e3d9d..63d8319d84 100644 --- a/aea/configurations/schemas/skill-config_schema.json +++ b/aea/configurations/schemas/skill-config_schema.json @@ -7,6 +7,7 @@ "name", "author", "version", + "type", "license", "aea_version", "protocols", @@ -24,7 +25,7 @@ "$ref": "definitions.json#/definitions/package_version" }, "type": { - "$ref": "definitions.json#/definitions/component_type" + "enum": ["skill"] }, "license": { "$ref": "definitions.json#/definitions/license" @@ -62,6 +63,26 @@ "$ref": "definitions.json#/definitions/public_id" } }, + "handlers": { + "$ref": "#/definitions/handlers" + }, + "behaviours": { + "$ref": "#/definitions/behaviours" + }, + "models": { + "$ref": "#/definitions/models" + }, + "dependencies": { + "$ref": "definitions.json#/definitions/dependencies" + }, + "description": { + "$ref": "definitions.json#/definitions/description" + }, + "is_abstract": { + "type": "boolean" + } + }, + "definitions": { "handlers": { "type": "object", "additionalProperties": false, @@ -90,17 +111,6 @@ } } }, - "dependencies": { - "$ref": "definitions.json#/definitions/dependencies" - }, - "description": { - "$ref": "definitions.json#/definitions/description" - }, - "is_abstract": { - "type": "boolean" - } - }, - "definitions": { "behaviour": { "type": "object", "additionalProperties": false, diff --git a/aea/connections/base.py b/aea/connections/base.py index a34afba31e..3f6b9b137b 100644 --- a/aea/connections/base.py +++ b/aea/connections/base.py @@ -20,7 +20,6 @@ """The base connection package.""" import asyncio import inspect -import logging import re from abc import ABC, abstractmethod from contextlib import contextmanager @@ -35,6 +34,7 @@ from aea.exceptions import enforce from aea.helpers.async_utils import AsyncState from aea.helpers.base import load_module +from aea.helpers.logging import get_logger from aea.identity.base import Identity @@ -42,9 +42,6 @@ from aea.mail.base import Address, Envelope # pragma: no cover -logger = logging.getLogger(__name__) - - class ConnectionStates(Enum): """Connection states enum.""" @@ -66,7 +63,7 @@ def __init__( crypto_store: Optional[CryptoStore] = None, restricted_to_protocols: Optional[Set[PublicId]] = None, excluded_protocols: Optional[Set[PublicId]] = None, - **kwargs + **kwargs, ): """ Initialize the connection. @@ -109,6 +106,22 @@ def _ensure_connected(self) -> None: # pragma: nocover if not self.is_connected: raise ConnectionError("Connection is not connected! Connect first!") + @staticmethod + def _ensure_valid_envelope_for_external_comms(envelope: "Envelope") -> None: + """ + Ensure the envelope sender and to are valid addresses for agent-to-agent communication. + + :param envelope: the envelope + """ + enforce( + not envelope.is_sender_public_id, + f"Sender field of envelope is public id, needs to be address. Found={envelope.sender}", + ) + enforce( + not envelope.is_to_public_id, + f"To field of envelope is public id, needs to be address. Found={envelope.to}", + ) + @contextmanager def _connect_context(self) -> Generator: """Set state connecting, disconnecteing, dicsconnected during connect method.""" @@ -221,7 +234,7 @@ def from_config( configuration: ConnectionConfig, identity: Identity, crypto_store: CryptoStore, - **kwargs + **kwargs, ) -> "Connection": """ Load a connection from a configuration. @@ -248,6 +261,7 @@ def from_config( filter(lambda x: re.match(connection_class_name, x[0]), classes) ) name_to_class = dict(connection_classes) + logger = get_logger(__name__, identity.name) logger.debug("Processing connection {}".format(connection_class_name)) connection_class = name_to_class.get(connection_class_name, None) enforce( @@ -258,7 +272,7 @@ def from_config( configuration=configuration, identity=identity, crypto_store=crypto_store, - **kwargs + **kwargs, ) @property diff --git a/aea/connections/stub/connection.py b/aea/connections/stub/connection.py index c90e4e8ab5..63493e5683 100644 --- a/aea/connections/stub/connection.py +++ b/aea/connections/stub/connection.py @@ -35,7 +35,7 @@ from aea.mail.base import Envelope -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger("aea.packages.fetchai.connections.stub") INPUT_FILE_KEY = "input_file" OUTPUT_FILE_KEY = "output_file" @@ -43,7 +43,7 @@ DEFAULT_OUTPUT_FILE_NAME = "./output_file" SEPARATOR = b"," -PUBLIC_ID = PublicId.from_str("fetchai/stub:0.9.0") +PUBLIC_ID = PublicId.from_str("fetchai/stub:0.11.0") def _encode(e: Envelope, separator: bytes = SEPARATOR): @@ -70,7 +70,7 @@ def _decode(e: bytes, separator: bytes = SEPARATOR): ) ) - to = split[0].decode("utf-8").strip() + to = split[0].decode("utf-8").strip().lstrip("\x00") sender = split[1].decode("utf-8").strip() protocol_id = PublicId.from_str(split[2].decode("utf-8").strip()) # protobuf messages cannot be delimited as they can contain an arbitrary byte sequence; however @@ -88,7 +88,8 @@ def lock_file(file_descriptor: IO[bytes]): :param file_descriptor: file descriptio of file to lock. """ with exception_log_and_reraise( - logger.error, f"Couldn't acquire lock for file {file_descriptor.name}: {{}}" + _default_logger.error, + f"Couldn't acquire lock for file {file_descriptor.name}: {{}}", ): file_lock.lock(file_descriptor, file_lock.LOCK_EX) @@ -101,7 +102,7 @@ def lock_file(file_descriptor: IO[bytes]): def write_envelope(envelope: Envelope, file_pointer: IO[bytes]) -> None: """Write envelope to file.""" encoded_envelope = _encode(envelope, separator=SEPARATOR) - logger.debug("write {}: to {}".format(encoded_envelope, file_pointer.name)) + _default_logger.debug("write {}: to {}".format(encoded_envelope, file_pointer.name)) write_with_lock(file_pointer, encoded_envelope) @@ -121,14 +122,16 @@ def _process_line(line: bytes) -> Optional[Envelope]: :return: Envelope :raise: Exception """ - logger.debug("processing: {!r}".format(line)) + _default_logger.debug("processing: {!r}".format(line)) envelope = None # type: Optional[Envelope] try: envelope = _decode(line, separator=SEPARATOR) except ValueError as e: - logger.error("Bad formatted line: {!r}. {}".format(line, e)) + _default_logger.error("Bad formatted line: {!r}. {}".format(line, e)) except Exception as e: # pragma: nocover # pylint: disable=broad-except - logger.exception("Error when processing a line. Message: {}".format(str(e))) + _default_logger.exception( + "Error when processing a line. Message: {}".format(str(e)) + ) return envelope @@ -250,6 +253,9 @@ async def receive(self, *args, **kwargs) -> Optional["Envelope"]: try: return await self.in_queue.get() + except CancelledError: # pragma: no cover + self.logger.debug("Receive cancelled.") + return None except Exception: # pylint: disable=broad-except self.logger.exception("Stub connection receive error:") return None @@ -309,6 +315,7 @@ async def send(self, envelope: Envelope) -> None: :return: None """ self._ensure_connected() + self._ensure_valid_envelope_for_external_comms(envelope) await self.loop.run_in_executor( self._write_pool, write_envelope, envelope, self.output_file ) diff --git a/aea/connections/stub/connection.yaml b/aea/connections/stub/connection.yaml index 3f359850f7..a012b6b322 100644 --- a/aea/connections/stub/connection.yaml +++ b/aea/connections/stub/connection.yaml @@ -1,6 +1,6 @@ name: stub author: fetchai -version: 0.9.0 +version: 0.11.0 type: connection description: The stub connection implements a connection stub which reads/writes messages from/to file. @@ -8,8 +8,8 @@ license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: __init__.py: QmWwepN9Fy9gHAp39vUGFSLdnB9JZjdyE3STnbowSUhJkC - connection.py: QmeWnyf1Xn3PxDedNimJaykHv9V5eo7HK1HXefPbygR1cj - readme.md: QmXSAtxSY7C2YkvUxeVnpqCJY9uJYZxZBmuUcE4zjFXcXz + connection.py: QmSdcuep4xkD11D7cycyJmptgNxRVGByYZScF7uN43RxCZ + readme.md: QmTac8uG5sT9igmMhfUbWMpyNUG5Dsj3JJZBBdfT1wTfvA fingerprint_ignore_patterns: [] protocols: [] class_name: StubConnection diff --git a/aea/connections/stub/readme.md b/aea/connections/stub/readme.md index 839993ec33..5db901637e 100644 --- a/aea/connections/stub/readme.md +++ b/aea/connections/stub/readme.md @@ -2,6 +2,6 @@ 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.9.0`. (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.11.0`. (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/aea/contracts/base.py b/aea/contracts/base.py index 21b34fd78b..df55fb103c 100644 --- a/aea/contracts/base.py +++ b/aea/contracts/base.py @@ -34,7 +34,7 @@ contract_registry: Registry["Contract"] = Registry["Contract"]() -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) class Contract(Component): @@ -113,7 +113,7 @@ def from_config(cls, configuration: ContractConfig, **kwargs) -> "Contract": filter(lambda x: re.match(contract_class_name, x[0]), classes) ) name_to_class = dict(contract_classes) - logger.debug(f"Processing contract {contract_class_name}") + _default_logger.debug(f"Processing contract {contract_class_name}") contract_class = name_to_class.get(contract_class_name, None) enforce( contract_class is not None, @@ -197,11 +197,13 @@ def get_state( def _try_to_register_contract(configuration: ContractConfig): """Register a contract to the registry.""" if str(configuration.public_id) in contract_registry.specs: # pragma: nocover - logger.warning( + _default_logger.warning( f"Skipping registration of contract {configuration.public_id} since already registered." ) return - logger.debug(f"Registering contract {configuration.public_id}") # pragma: nocover + _default_logger.debug( + f"Registering contract {configuration.public_id}" + ) # pragma: nocover try: # pragma: nocover contract_registry.register( id_=str(configuration.public_id), @@ -211,6 +213,8 @@ def _try_to_register_contract(configuration: ContractConfig): ) except AEAException as e: # pragma: nocover if "Cannot re-register id:" in str(e): - logger.warning("Already registered: {}".format(configuration.class_name)) + _default_logger.warning( + "Already registered: {}".format(configuration.class_name) + ) else: raise e diff --git a/aea/crypto/base.py b/aea/crypto/base.py index 2f70e8513b..d39912b205 100644 --- a/aea/crypto/base.py +++ b/aea/crypto/base.py @@ -212,6 +212,15 @@ def get_hash(message: bytes) -> str: :return: the hash of the message. """ + @classmethod + @abstractmethod + def is_valid_address(cls, address: Address) -> bool: + """ + Check if the address is valid. + + :param address: the address to validate + """ + class LedgerApi(Helper, ABC): """Interface for ledger APIs.""" diff --git a/aea/crypto/cosmos.py b/aea/crypto/cosmos.py index d0a94db085..cd81b7cb19 100644 --- a/aea/crypto/cosmos.py +++ b/aea/crypto/cosmos.py @@ -32,7 +32,7 @@ from typing import Any, BinaryIO, Dict, List, Optional, Tuple import requests -from bech32 import bech32_encode, convertbits +from bech32 import bech32_decode, bech32_encode, convertbits from ecdsa import SECP256k1, SigningKey, VerifyingKey from ecdsa.util import sigencode_string_canonize @@ -42,7 +42,7 @@ from aea.helpers.base import try_decorator -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) _COSMOS = "cosmos" TESTNET_NAME = "testnet" @@ -167,6 +167,16 @@ def get_hash(message: bytes) -> str: digest = hashlib.sha256(message).hexdigest() return digest + @classmethod + def is_valid_address(cls, address: Address) -> bool: + """ + Check if the address is valid. + + :param address: the address to validate + """ + result = bech32_decode(address) + return result != (None, None) and result[0] == cls.address_prefix + class CosmosCrypto(Crypto[SigningKey]): """Class wrapping the Account Generation from Ethereum ledger.""" @@ -372,7 +382,7 @@ def get_balance(self, address: Address) -> Optional[int]: @try_decorator( "Encountered exception when trying get balance: {}", - logger_method=logger.warning, + logger_method=_default_logger.warning, ) def _try_get_balance(self, address: Address) -> Optional[int]: """Try get the balance of a given account.""" @@ -540,7 +550,7 @@ def get_handle_transaction( @staticmethod @try_decorator( "Encountered exception when trying to execute wasm transaction: {}", - logger_method=logger.warning, + logger_method=_default_logger.warning, ) def try_execute_wasm_transaction( tx_signed: Any, signed_tx_filename: str = "tx.signed" @@ -571,7 +581,7 @@ def try_execute_wasm_transaction( @staticmethod @try_decorator( "Encountered exception when trying to execute wasm query: {}", - logger_method=logger.warning, + logger_method=_default_logger.warning, ) def try_execute_wasm_query( contract_address: Address, query_msg: Any @@ -690,7 +700,7 @@ def _get_transaction( @try_decorator( "Encountered exception when trying to get account number and sequence: {}", - logger_method=logger.warning, + logger_method=_default_logger.warning, ) def _try_get_account_number_and_sequence( self, address: Address @@ -723,7 +733,7 @@ def send_signed_transaction(self, tx_signed: Any) -> Optional[str]: elif self.is_transfer_transaction(tx_signed): tx_digest = self._try_send_signed_transaction(tx_signed) else: # pragma: nocover - logger.warning( + _default_logger.warning( "Cannot send transaction. Unknown transaction type: {}".format( tx_signed ) @@ -752,7 +762,8 @@ def is_transfer_transaction(tx_signed: Any) -> bool: return result @try_decorator( - "Encountered exception when trying to send tx: {}", logger_method=logger.warning + "Encountered exception when trying to send tx: {}", + logger_method=_default_logger.warning, ) def _try_send_signed_transaction(self, tx_signed: Any) -> Optional[str]: """ @@ -766,6 +777,8 @@ def _try_send_signed_transaction(self, tx_signed: Any) -> Optional[str]: response = requests.post(url=url, json=tx_signed) if response.status_code == 200: tx_digest = response.json()["txhash"] + else: # pragma: nocover + _default_logger.error("Cannot send transaction: {}".format(response.json())) return tx_digest def get_transaction_receipt(self, tx_digest: str) -> Optional[Any]: @@ -780,7 +793,7 @@ def get_transaction_receipt(self, tx_digest: str) -> Optional[Any]: @try_decorator( "Encountered exception when trying to get transaction receipt: {}", - logger_method=logger.warning, + logger_method=_default_logger.warning, ) def _try_get_transaction_receipt(self, tx_digest: str) -> Optional[Any]: """ @@ -864,10 +877,6 @@ class CosmosApi(_CosmosApi, CosmosHelper): """Class to interact with the Cosmos SDK via a HTTP APIs.""" -class CosmWasmCLIWrapper: - """Wrapper of the CosmWasm CLI.""" - - """ Equivalent to: @dataclass @@ -933,7 +942,7 @@ def get_wealth(self, address: Address) -> None: @classmethod @try_decorator( "An error occured while attempting to request a faucet request:\n{}", - logger_method=logger.error, + logger_method=_default_logger.error, ) def _try_create_faucet_claim(cls, address: Address) -> Optional[str]: """ @@ -951,9 +960,9 @@ def _try_create_faucet_claim(cls, address: Address) -> Optional[str]: data = response.json() uid = data["uid"] - logger.info("Wealth claim generated, uid: {}".format(uid)) + _default_logger.info("Wealth claim generated, uid: {}".format(uid)) else: # pragma: no cover - logger.warning( + _default_logger.warning( "Response: {}, Text: {}".format(response.status_code, response.text) ) @@ -962,7 +971,7 @@ def _try_create_faucet_claim(cls, address: Address) -> Optional[str]: @classmethod @try_decorator( "An error occured while attempting to request a faucet request:\n{}", - logger_method=logger.error, + logger_method=_default_logger.error, ) def _try_check_faucet_claim(cls, uid: str) -> Optional[CosmosFaucetStatus]: """ @@ -973,7 +982,7 @@ def _try_check_faucet_claim(cls, uid: str) -> Optional[CosmosFaucetStatus]: """ response = requests.get(cls._faucet_status_uri(uid)) if response.status_code != 200: # pragma: nocover - logger.warning( + _default_logger.warning( "Response: {}, Text: {}".format(response.status_code, response.text) ) return None diff --git a/aea/crypto/ethereum.py b/aea/crypto/ethereum.py index 0f4eb47d3c..eea476ce29 100644 --- a/aea/crypto/ethereum.py +++ b/aea/crypto/ethereum.py @@ -40,7 +40,7 @@ from aea.helpers.base import try_decorator -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) _ETHEREUM = "ethereum" GAS_ID = "gwei" @@ -332,7 +332,7 @@ def get_transfer_transaction( # pylint: disable=arguments-differ gas_estimate = self._try_get_gas_estimate(transaction) if gas_estimate is not None and tx_fee <= gas_estimate: # pragma: no cover - logger.warning( + _default_logger.warning( "Needed to increase tx_fee to cover the gas consumption of the transaction. Estimated gas consumption is: {}.".format( gas_estimate ) @@ -382,7 +382,9 @@ def _try_send_signed_transaction(self, tx_signed: Any) -> Optional[str]: tx_signed.rawTransaction ) tx_digest = hex_value.hex() - logger.debug("Successfully sent transaction with digest: {}".format(tx_digest)) + _default_logger.debug( + "Successfully sent transaction with digest: {}".format(tx_digest) + ) return tx_digest def get_transaction_receipt(self, tx_digest: str) -> Optional[Any]: @@ -498,12 +500,21 @@ def try_estimate_gas(self, tx: Dict[str, Any]) -> Dict[str, Any]: # try estimate the gas and update the transaction dict _tx = cast(TxParams, tx) gas_estimate = self.api.eth.estimateGas(transaction=_tx) - logger.debug("gas estimate: {}".format(gas_estimate)) + _default_logger.debug("gas estimate: {}".format(gas_estimate)) tx["gas"] = gas_estimate except Exception as e: # pylint: disable=broad-except # pragma: nocover - logger.debug("Error when trying to estimate gas: {}".format(e)) + _default_logger.debug("Error when trying to estimate gas: {}".format(e)) return tx + @classmethod + def is_valid_address(cls, address: Address) -> bool: + """ + Check if the address is valid. + + :param address: the address to validate + """ + return Web3.isAddress(address) + class EthereumFaucetApi(FaucetApi): """Ethereum testnet faucet API.""" @@ -534,17 +545,17 @@ def _try_get_wealth(address: Address) -> None: """ response = requests.get(ETHEREUM_TESTNET_FAUCET_URL + address) if response.status_code // 100 == 5: - logger.error("Response: {}".format(response.status_code)) + _default_logger.error("Response: {}".format(response.status_code)) elif response.status_code // 100 in [3, 4]: response_dict = json.loads(response.text) - logger.warning( + _default_logger.warning( "Response: {}\nMessage: {}".format( response.status_code, response_dict.get("message") ) ) elif response.status_code // 100 == 2: response_dict = json.loads(response.text) - logger.info( + _default_logger.info( "Response: {}\nMessage: {}".format( response.status_code, response_dict.get("message") ) diff --git a/aea/crypto/helpers.py b/aea/crypto/helpers.py index cffc763e35..64cfc94b1a 100644 --- a/aea/crypto/helpers.py +++ b/aea/crypto/helpers.py @@ -30,7 +30,7 @@ PRIVATE_KEY_PATH_SCHEMA = "{}_private_key.txt" -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) def verify_or_create_private_keys( @@ -106,10 +106,10 @@ def try_validate_private_key_path( private_key_path, e ) if exit_on_error: - logger.exception(error_msg) # show exception traceback on exit + _default_logger.exception(error_msg) # show exception traceback on exit sys.exit(1) else: # pragma: no cover - logger.error(error_msg) + _default_logger.error(error_msg) raise diff --git a/aea/crypto/ledger_apis.py b/aea/crypto/ledger_apis.py index 5773b5b83f..5f7883bddd 100644 --- a/aea/crypto/ledger_apis.py +++ b/aea/crypto/ledger_apis.py @@ -18,7 +18,6 @@ # ------------------------------------------------------------------------------ """Module wrapping all the public and private keys cryptography.""" -import logging from typing import Any, Dict, Optional, Tuple, Union from aea.common import Address @@ -47,8 +46,6 @@ FetchAIApi.identifier: {"address": FETCHAI_DEFAULT_ADDRESS}, } # type: Dict[str, Dict[str, Union[str, int]]] -logger = logging.getLogger(__name__) - class LedgerApis: """Store all the ledger apis we initialise.""" diff --git a/aea/crypto/wallet.py b/aea/crypto/wallet.py index e030ef31d7..bfa7060a81 100644 --- a/aea/crypto/wallet.py +++ b/aea/crypto/wallet.py @@ -26,7 +26,7 @@ from aea.crypto.registries import make_crypto -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) class CryptoStore: @@ -149,7 +149,7 @@ def sign_message( """ crypto_object = self.crypto_objects.get(crypto_id, None) if crypto_object is None: - logger.warning( + _default_logger.warning( "No crypto object for crypto_id={} in wallet!".format(crypto_id) ) signature = None # type: Optional[str] @@ -167,7 +167,7 @@ def sign_transaction(self, crypto_id: str, transaction: Any) -> Optional[Any]: """ crypto_object = self.crypto_objects.get(crypto_id, None) if crypto_object is None: - logger.warning( + _default_logger.warning( "No crypto object for crypto_id={} in wallet!".format(crypto_id) ) signed_transaction = None # type: Optional[Any] diff --git a/aea/decision_maker/base.py b/aea/decision_maker/base.py index 2565b84f75..26d8d5b0c6 100644 --- a/aea/decision_maker/base.py +++ b/aea/decision_maker/base.py @@ -19,7 +19,6 @@ """This module contains the decision maker class.""" import hashlib -import logging import threading from abc import ABC, abstractmethod from queue import Queue @@ -30,14 +29,12 @@ from aea.crypto.wallet import Wallet from aea.helpers.async_friendly_queue import AsyncFriendlyQueue +from aea.helpers.logging import WithLogger, get_logger from aea.helpers.transaction.base import Terms from aea.identity.base import Identity from aea.protocols.base import Message -logger = logging.getLogger(__name__) - - def _hash(access_code: str) -> str: """ Get the hash of the access code. @@ -235,7 +232,7 @@ def protected_get( return internal_message -class DecisionMakerHandler(ABC): +class DecisionMakerHandler(WithLogger, ABC): """This class implements the decision maker.""" self_address: str = "decision_maker" @@ -246,8 +243,11 @@ def __init__(self, identity: Identity, wallet: Wallet, **kwargs): :param identity: the identity :param wallet: the wallet + :param logger: the logger :param kwargs: the key word arguments """ + logger = get_logger(__name__, identity.name) + WithLogger.__init__(self, logger=logger) self._identity = identity self._wallet = wallet self._context = SimpleNamespace(**kwargs) @@ -288,7 +288,7 @@ def handle(self, message: Message) -> None: """ -class DecisionMaker: +class DecisionMaker(WithLogger): """This class implements the decision maker.""" def __init__( @@ -300,6 +300,7 @@ def __init__( :param agent_name: the agent name :param decision_maker_handler: the decision maker handler """ + WithLogger.__init__(self, logger=decision_maker_handler.logger) self._agent_name = decision_maker_handler.identity.name self._queue_access_code = uuid4().hex self._message_in_queue = ProtectedQueue( @@ -330,7 +331,7 @@ def start(self) -> None: """Start the decision maker.""" with self._lock: if not self._stopped: # pragma: no cover - logger.debug( + self.logger.debug( "[{}]: Decision maker already started.".format(self._agent_name) ) return @@ -346,7 +347,7 @@ def stop(self) -> None: self.message_in_queue.put(None) if self._thread is not None: self._thread.join() - logger.debug("[{}]: Decision Maker stopped.".format(self._agent_name)) + self.logger.debug("[{}]: Decision Maker stopped.".format(self._agent_name)) self._thread = None def execute(self) -> None: @@ -365,7 +366,7 @@ def execute(self) -> None: ) # type: Optional[Message] if message is None: - logger.debug( + self.logger.debug( "[{}]: Received empty message. Quitting the processing loop...".format( self._agent_name ) diff --git a/aea/decision_maker/default.py b/aea/decision_maker/default.py index a43d6c1973..54d6bae65f 100644 --- a/aea/decision_maker/default.py +++ b/aea/decision_maker/default.py @@ -55,7 +55,7 @@ QUANTITY_SHIFT = 100 -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) class SigningDialogues(BaseSigningDialogues): @@ -304,7 +304,7 @@ def is_affordable(self, terms: Terms) -> bool: if self.is_initialized: is_affordable = self.is_affordable_transaction(terms) else: - logger.warning( + _default_logger.warning( "Cannot verify whether transaction is affordable as ownership state is not initialized. Assuming it is!" ) is_affordable = True @@ -535,7 +535,7 @@ def is_utility_enhancing( self.utility_diff_from_transaction(ownership_state, terms) >= 0.0 ) else: - logger.warning( + _default_logger.warning( "Cannot verify whether transaction improves utility as preferences are not initialized. Assuming it does!" ) is_utility_enhancing = True @@ -585,7 +585,7 @@ def handle(self, message: Message) -> None: elif isinstance(message, StateUpdateMessage): self._handle_state_update_message(message) else: # pragma: no cover - logger.error( + self.logger.error( "[{}]: cannot handle message={} of type={}".format( self.agent_name, message, type(message) ) @@ -599,7 +599,7 @@ def _handle_signing_message(self, signing_msg: SigningMessage) -> None: :return: None """ if not self.context.goal_pursuit_readiness.is_ready: - logger.debug( + self.logger.debug( "[{}]: Preferences and ownership state not initialized!".format( self.agent_name ) @@ -609,7 +609,7 @@ def _handle_signing_message(self, signing_msg: SigningMessage) -> None: Optional[SigningDialogue], self.signing_dialogues.update(signing_msg) ) if signing_dialogue is None: # pragma: no cover - logger.error( + self.logger.error( "[{}]: Could not construct signing dialogue. Aborting!".format( self.agent_name ) @@ -622,7 +622,7 @@ def _handle_signing_message(self, signing_msg: SigningMessage) -> None: elif signing_msg.performative == SigningMessage.Performative.SIGN_TRANSACTION: self._handle_transaction_signing(signing_msg, signing_dialogue) else: # pragma: no cover - logger.error( + self.logger.error( "[{}]: Unexpected transaction message performative".format( self.agent_name ) @@ -716,7 +716,7 @@ def _handle_state_update_message( self.state_update_dialogues.update(state_update_msg), ) if state_update_dialogue is None: # pragma: no cover - logger.error( + self.logger.error( "[{}]: Could not construct state_update dialogue. Aborting!".format( self.agent_name ) @@ -724,7 +724,7 @@ def _handle_state_update_message( return if state_update_msg.performative == StateUpdateMessage.Performative.INITIALIZE: - logger.warning( + self.logger.warning( "[{}]: Applying ownership_state and preferences initialization!".format( self.agent_name ) @@ -741,7 +741,7 @@ def _handle_state_update_message( GoalPursuitReadiness.Status.READY ) elif state_update_msg.performative == StateUpdateMessage.Performative.APPLY: - logger.info("[{}]: Applying state update!".format(self.agent_name)) + self.logger.info("[{}]: Applying state update!".format(self.agent_name)) self.context.ownership_state.apply_delta( delta_amount_by_currency_id=state_update_msg.amount_by_currency_id, delta_quantities_by_good_id=state_update_msg.quantities_by_good_id, diff --git a/aea/helpers/async_utils.py b/aea/helpers/async_utils.py index 3adb111db1..c0707e5392 100644 --- a/aea/helpers/async_utils.py +++ b/aea/helpers/async_utils.py @@ -23,6 +23,7 @@ import logging import subprocess # nosec import time +from abc import ABC, abstractmethod from asyncio import CancelledError from asyncio.events import AbstractEventLoop, TimerHandle from asyncio.futures import Future @@ -54,7 +55,7 @@ ) -logger = logging.getLogger(__file__) +_default_logger = logging.getLogger(__file__) def ensure_list(value: Any) -> List: @@ -120,7 +121,7 @@ def _state_changed(self, state: Any) -> None: try: callback_fn(state) except Exception: # pylint: disable=broad-except - logger.exception(f"Exception on calling {callback_fn}") + _default_logger.exception(f"Exception on calling {callback_fn}") for watcher in list(self._watchers): if state not in watcher._states: # type: ignore # pylint: disable=protected-access # pragma: nocover @@ -259,27 +260,6 @@ def stop(self) -> None: self._timerhandle = None -def ensure_loop(loop: Optional[AbstractEventLoop] = None) -> AbstractEventLoop: - """ - Use loop provided or create new if not provided or closed. - - Return loop passed if its provided,not closed and not running, otherwise returns new event loop. - - :param loop: optional event loop - :return: asyncio event loop - """ - try: - loop = loop or asyncio.new_event_loop() - if loop.is_closed(): - raise ValueError("Event loop closed.") # pragma: nocover - if loop.is_running(): - raise ValueError("Event loop running.") - except (RuntimeError, ValueError): - loop = asyncio.new_event_loop() - - return loop - - class AnotherThreadTask: """ Schedule a task to run on the loop in another thread. @@ -351,10 +331,10 @@ def start(self) -> None: def run(self) -> None: """Run code inside thread.""" - logger.debug("Starting threaded asyncio loop...") + _default_logger.debug("Starting threaded asyncio loop...") asyncio.set_event_loop(self._loop) self._loop.run_forever() - logger.debug("Asyncio loop has been stopped.") + _default_logger.debug("Asyncio loop has been stopped.") def call(self, coro: Awaitable) -> Any: """ @@ -366,18 +346,18 @@ def call(self, coro: Awaitable) -> Any: def stop(self) -> None: """Stop event loop in thread.""" - logger.debug("Stopping...") + _default_logger.debug("Stopping...") if not self.is_alive(): # pragma: nocover return if self._loop.is_running(): - logger.debug("Stopping loop...") + _default_logger.debug("Stopping loop...") self._loop.call_soon_threadsafe(self._loop.stop) - logger.debug("Wait thread to join...") + _default_logger.debug("Wait thread to join...") self.join(10) - logger.debug("Stopped.") + _default_logger.debug("Stopped.") class AwaitableProc: @@ -393,7 +373,7 @@ def __init__(self, *args, **kwargs): self.future = None async def start(self): - """Start the subprocess""" + """Start the subprocess.""" self.proc = subprocess.Popen(*self.args, **self.kwargs) # nosec self.loop = asyncio.get_event_loop() self.future = asyncio.futures.Future() @@ -408,6 +388,7 @@ async def start(self): self._thread.join() def _in_thread(self): + """Run in dedicated thread.""" self.proc.wait() self.loop.call_soon_threadsafe(self.future.set_result, self.proc.returncode) @@ -474,6 +455,219 @@ def __init__(self, getters: List[Tuple[Callable[[Any], None], Callable]]): :param getters: List of tuples of handler and couroutine to be awaiteed for an item. """ - super(HandlerItemGetter, self).__init__( + super().__init__( [self._make_getter(handler, getter) for handler, getter in getters] ) + + +ready_future: Future = Future() +ready_future.set_result(None) + + +class Runnable(ABC): + """ + Abstract Runnable class. + + Use to run async task in same event loop or in dedicated thread. + Provides: start, stop sync methods to start and stop task + Use wait_completed to await task was completed. + """ + + def __init__( + self, loop: asyncio.AbstractEventLoop = None, threaded: bool = False + ) -> None: + """ + Init runnable. + + :param loop: asyncio event loop to use. + :param threaded: bool. start in thread if True. + + :return: None + """ + if loop and threaded: + raise ValueError( + "You can not set a loop in threaded mode. A separate loop will be created in each thread." + ) + self._loop = loop + self._threaded = threaded + self._task: Optional[asyncio.Task] = None + self._thread: Optional[Thread] = None + self._completed_event: Optional[asyncio.Event] = None + self._got_result = False + self._was_cancelled = False + self._is_running: bool = False + + def start(self) -> bool: + """ + Start runnable. + + :return: bool started or not. + """ + if self._task and not self._task.done(): + _default_logger.debug(f"{self} already running") + return False + + self._is_running = False + self._got_result = False + self._set_loop() + self._completed_event = asyncio.Event(loop=self._loop) + self._was_cancelled = False + self._set_task() + + if self._threaded: + self._thread = Thread( + target=self._loop.run_until_complete, args=[self._task] # type: ignore # loop was set in set_loop + ) + self._thread.start() + + return True + + def _set_loop(self) -> None: + """Select and set loop.""" + if self._threaded: + self._loop = asyncio.new_event_loop() + else: + try: + self._loop = self._loop or asyncio.get_event_loop() + except RuntimeError: + self._loop = asyncio.new_event_loop() + asyncio.set_event_loop(self._loop) + + def _set_task(self) -> None: + """Create task.""" + if not self._loop: # pragma: nocover + raise ValueError("Loop was not set.") + self._task = self._loop.create_task(self._run_wrapper()) + + async def _run_wrapper(self) -> None: + """Wrap run() method.""" + if not self._completed_event or not self._loop: # pragma: nocover + raise ValueError("Start was not called!") + + try: + with suppress(asyncio.CancelledError): + return await self.run() + finally: + self._loop.call_soon_threadsafe(self._completed_event.set) + + @property + def is_running(self) -> bool: # pragma: nocover + """Get running state.""" + return self._is_running + + @abstractmethod + async def run(self) -> Any: + """Implement run logic respectfull to CancelError on termination.""" + + def wait_completed( + self, sync: bool = False, timeout: float = None, force_result: bool = False + ) -> Awaitable: + """ + Wait runnable execution completed. + + :param sync: bool. blocking wait + :param timeout: float seconds + :param force_result: check result even it was waited. + + :return: awaitable if sync is False, otherise None + """ + if not self._task: + _default_logger.warning("Runnable is not started") + return ready_future + + if self._got_result and not force_result: + return ready_future + + if sync: + self._wait_sync(timeout) + return ready_future + + return self._wait_async(timeout) + + def _wait_sync(self, timeout: Optional[float] = None) -> None: + """Wait task completed in sync manner.""" + if self._task is None or not self._loop: # pragma: nocover + raise ValueError("task is not set!") + + if self._threaded or self._loop.is_running(): + start_time = time.time() + + while not self._task.done(): + time.sleep(0.01) + if timeout is not None and time.time() - start_time > timeout: + raise asyncio.TimeoutError() + + self._got_result = True + if self._task.exception(): + raise self._task.exception() + else: + self._loop.run_until_complete( + asyncio.wait_for(self._wait(), timeout=timeout) + ) + + def _wait_async(self, timeout): + if not self._threaded: + return asyncio.wait_for(self._wait(), timeout=timeout) + + # for threaded mode create a future and bind it to task + loop = asyncio.get_event_loop() + fut = loop.create_future() + + def done(task): + try: + if fut.done(): # pragma: nocover + return + if task.exception(): + fut.set_exception(task.exception()) + else: # pragma: nocover + fut.set_result(None) + finally: + self._got_result = True + + if self._task.done(): + done(self._task) + else: + self._task.add_done_callback( + lambda task: loop.call_soon_threadsafe(lambda: done(task)) + ) + + return fut + + async def _wait(self) -> None: + """Wait internal method.""" + if not self._task or not self._completed_event: # pragma: nocover + raise ValueError("Not started") + + await self._completed_event.wait() + + try: + await self._task + finally: + self._got_result = True + + def stop(self, force: bool = False) -> None: + """Stop runnable.""" + _default_logger.debug(f"{self} is going to be stopped {self._task}") + if not self._task or not self._loop: + return + + if self._task.done(): + return + + self._loop.call_soon_threadsafe(self._task_cancel, force) + + def _task_cancel(self, force: bool = False) -> None: + """Cancel task internal method.""" + if self._task is None: + return + + if self._was_cancelled and not force: + return + + self._was_cancelled = True + self._task.cancel() + + def start_and_wait_completed(self, *args, **kwargs) -> Awaitable: + """Alias for start and wait methods.""" + self.start() + return self.wait_completed(*args, **kwargs) diff --git a/aea/helpers/base.py b/aea/helpers/base.py index 89cd6e3e71..40d78d1796 100644 --- a/aea/helpers/base.py +++ b/aea/helpers/base.py @@ -31,97 +31,16 @@ import sys import time import types -from collections import OrderedDict, UserString +from collections import UserString, defaultdict, deque +from copy import copy from functools import wraps from pathlib import Path -from typing import Any, Callable, Dict, List, TextIO, Union +from typing import Any, Callable, Deque, Dict, List, Set, TypeVar, Union -import yaml from dotenv import load_dotenv -logger = logging.getLogger(__name__) - - -def _ordered_loading(fun: Callable): - # for pydocstyle - def ordered_load(stream: TextIO): - object_pairs_hook = OrderedDict - - class OrderedLoader(yaml.SafeLoader): - """A wrapper for safe yaml loader.""" - - pass - - def construct_mapping(loader, node): - loader.flatten_mapping(node) - return object_pairs_hook(loader.construct_pairs(node)) - - OrderedLoader.add_constructor( - yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping - ) - return fun(stream, Loader=OrderedLoader) # nosec - - return ordered_load - - -def _ordered_dumping(fun: Callable): - # for pydocstyle - def ordered_dump(data, stream=None, **kwds): - class OrderedDumper(yaml.SafeDumper): - """A wrapper for safe yaml loader.""" - - pass - - def _dict_representer(dumper, data): - return dumper.represent_mapping( - yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, data.items() - ) - - OrderedDumper.add_representer(OrderedDict, _dict_representer) - return fun(data, stream, Dumper=OrderedDumper, **kwds) # nosec - - return ordered_dump - - -@_ordered_loading -def yaml_load(*args, **kwargs) -> Dict[str, Any]: - """ - Load a yaml from a file pointer in an ordered way. - - :return: the yaml - """ - return yaml.load(*args, **kwargs) # nosec - - -@_ordered_loading -def yaml_load_all(*args, **kwargs) -> List[Dict[str, Any]]: - """ - Load a multi-paged yaml from a file pointer in an ordered way. - - :return: the yaml - """ - return list(yaml.load_all(*args, **kwargs)) # nosec - - -@_ordered_dumping -def yaml_dump(*args, **kwargs) -> None: - """ - Dump multi-paged yaml data to a yaml file in an ordered way. - - :return None - """ - yaml.dump(*args, **kwargs) # nosec - - -@_ordered_dumping -def yaml_dump_all(*args, **kwargs) -> None: - """ - Dump multi-paged yaml data to a yaml file in an ordered way. - - :return None - """ - yaml.dump_all(*args, **kwargs) # nosec +_default_logger = logging.getLogger(__name__) def _get_module(spec): @@ -143,12 +62,12 @@ def locate(path: str) -> Any: spec_name = ".".join(parts[: n + 1]) module_location = os.path.join(file_location, "__init__.py") spec = importlib.util.spec_from_file_location(spec_name, module_location) - logger.debug("Trying to import {}".format(module_location)) + _default_logger.debug("Trying to import {}".format(module_location)) nextmodule = _get_module(spec) if nextmodule is None: module_location = file_location + ".py" spec = importlib.util.spec_from_file_location(spec_name, module_location) - logger.debug("Trying to import {}".format(module_location)) + _default_logger.debug("Trying to import {}".format(module_location)) nextmodule = _get_module(spec) if nextmodule: @@ -390,3 +309,108 @@ def exception_log_and_reraise(log_method: Callable, message: str): except BaseException as e: # pylint: disable=broad-except # pragma: no cover # generic code log_method(message.format(e)) raise + + +def recursive_update(to_update: Dict, new_values: Dict) -> None: + """ + Update a dictionary by replacing conflicts with the new values. + + It does side-effects to the first dictionary. + + >>> to_update = dict(a=1, b=2, subdict=dict(subfield1=1)) + >>> new_values = dict(b=3, subdict=dict(subfield1=2)) + >>> recursive_update(to_update, new_values) + >>> to_update + {'a': 1, 'b': 3, 'subdict': {'subfield1': 2}} + + :param to_update: the dictionary to update. + :param new_values: the dictionary of new values to replace. + :return: None + """ + for key, value in new_values.items(): + if key not in to_update: + raise ValueError( + f"Key '{key}' is not contained in the dictionary to update." + ) + + value_to_update = to_update[key] + value_type = type(value) + value_to_update_type = type(value_to_update) + if value_type != value_to_update_type: + raise ValueError( + f"Trying to replace value '{value_to_update}' with value '{value}' which is of different type." + ) + + if value_type == value_to_update_type == dict: + recursive_update(value_to_update, value) + else: + to_update[key] = value + + +def _get_aea_logger_name_prefix(module_name: str, agent_name: str) -> str: + """ + Get the logger name prefix. + + It consists of a dotted path with: + - the name of the package, 'aea'; + - the agent name; + - the rest of the dotted path. + + >>> _get_aea_logger_name_prefix("aea.path.to.package", "myagent") + 'aea.myagent.path.to.package' + + :param module_name: the module name. + :param agent_name: the agent name. + :return: the logger name prefix. + """ + module_name_parts = module_name.split(".") + root = module_name_parts[0] + postfix = module_name_parts[1:] + return ".".join([root, agent_name, *postfix]) + + +T = TypeVar("T") + + +def find_topological_order(adjacency_list: Dict[T, Set[T]]) -> List[T]: + """ + Compute the topological order of a graph (using Kahn's algorithm). + + :param adjacency_list: the adjacency list of the graph. + :return: the topological order for the graph (as a sequence of nodes) + :raises ValueError: if the graph contains a cycle. + """ + # compute inverse adjacency list and the roots of the DAG. + adjacency_list = copy(adjacency_list) + visited: Set[T] = set() + roots: Set[T] = set() + inverse_adjacency_list: Dict[T, Set[T]] = defaultdict(set) + # compute both roots and inv. adj. list in one pass. + for start_node, end_nodes in adjacency_list.items(): + if start_node not in visited: + roots.add(start_node) + visited.update([start_node, *end_nodes]) + for end_node in end_nodes: + roots.discard(end_node) + inverse_adjacency_list[end_node].add(start_node) + + # compute the topological order + queue: Deque[T] = deque() + order = [] + queue.extendleft(sorted(roots)) + while len(queue) > 0: + current = queue.pop() + order.append(current) + next_nodes = adjacency_list.get(current, set()) + for node in next_nodes: + inverse_adjacency_list[node].discard(current) + if len(inverse_adjacency_list[node]) == 0: + queue.append(node) + + # remove all the edges + adjacency_list[current] = set() + + if any(len(edges) > 0 for edges in inverse_adjacency_list.values()): + raise ValueError("Graph has at least one cycle.") + + return order diff --git a/aea/helpers/exec_timeout.py b/aea/helpers/exec_timeout.py index 674e80e79b..07c66fa4cd 100644 --- a/aea/helpers/exec_timeout.py +++ b/aea/helpers/exec_timeout.py @@ -31,7 +31,7 @@ from typing import Optional, Type -logger = logging.getLogger(__file__) +_default_logger = logging.getLogger(__file__) class TimeoutResult: @@ -136,7 +136,7 @@ def _remove_timeout_watch(self) -> None: raise NotImplementedError # pragma: nocover -class ExecTimeoutSigAlarm(BaseExecTimeout): +class ExecTimeoutSigAlarm(BaseExecTimeout): # pylint: disable=too-few-public-methods """ ExecTimeout context manager implementation using signals and SIGALARM. @@ -271,7 +271,7 @@ def _set_timeout_watch(self) -> None: :return: None """ if not self._supervisor_thread: - logger.warning( + _default_logger.warning( "ExecTimeoutThreadGuard is used but not started! No timeout wil be applied!" ) return diff --git a/aea/helpers/install_dependency.py b/aea/helpers/install_dependency.py new file mode 100644 index 0000000000..b1796d565c --- /dev/null +++ b/aea/helpers/install_dependency.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2019 Fetch.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. +# +# ------------------------------------------------------------------------------ +"""Helper to install python dependecies.""" +import pprint +import subprocess # nosec +import sys +from logging import Logger +from typing import List, Optional + +import click + +from aea.configurations.base import Dependency +from aea.exceptions import AEAException, enforce + + +def install_dependency( + dependency_name: str, dependency: Dependency, logger: Optional[Logger] = None +) -> None: + """ + Install python dependency to the current python environment. + + :param dependency_name: name of the python package + :param dependency: Dependency specification + :param logger: the logger. + + :return: None + """ + click.echo(f"Installing {pprint.pformat(dependency_name)}...") + try: + pip_args = dependency.get_pip_install_args() + command = [sys.executable, "-m", "pip", "install", *pip_args] + if logger: + logger.debug("Calling '{}'".format(" ".join(command))) + return_code = run_install_subprocess(command) + if return_code == 1: + # try a second time + return_code = run_install_subprocess(command) + enforce(return_code == 0, "Return code != 0.") + except Exception as e: + raise AEAException( + "An error occurred while installing {}, {}: {}".format( + dependency_name, dependency, str(e) + ) + ) + + +def run_install_subprocess( + install_command: List[str], install_timeout: float = 300 +) -> int: + """ + Try executing install command. + + :param install_command: list strings of the command + :param install_timeout: timeout to wait pip to install + :return: the return code of the subprocess + """ + try: + subp = subprocess.Popen(install_command) # nosec + subp.wait(install_timeout) + return_code = subp.returncode + finally: + poll = subp.poll() + if poll is None: # pragma: no cover + subp.terminate() + subp.wait(30) + return return_code diff --git a/aea/helpers/logging.py b/aea/helpers/logging.py index 8a085528a5..bb61c740a9 100644 --- a/aea/helpers/logging.py +++ b/aea/helpers/logging.py @@ -21,6 +21,14 @@ from logging import Logger, LoggerAdapter from typing import Any, MutableMapping, Optional, Tuple, cast +from aea.helpers.base import _get_aea_logger_name_prefix + + +def get_logger(module_path: str, agent_name: str) -> Logger: + """Get the logger based on a module path and agent name.""" + logger = logging.getLogger(_get_aea_logger_name_prefix(module_path, agent_name)) + return logger + class AgentLoggerAdapter(LoggerAdapter): """This class is a logger adapter that prepends the agent name to log messages.""" diff --git a/aea/helpers/multiaddr/base.py b/aea/helpers/multiaddr/base.py index 01d12a4289..430f847c69 100644 --- a/aea/helpers/multiaddr/base.py +++ b/aea/helpers/multiaddr/base.py @@ -20,6 +20,7 @@ """This module contains multiaddress class.""" from binascii import unhexlify +from typing import Optional import base58 import multihash # type: ignore @@ -92,25 +93,51 @@ def _hex_to_bytes(hexed): class MultiAddr: """Protocol Labs' Multiaddress representation of a network address.""" - def __init__(self, host: str, port: int, public_key: str): + def __init__( + self, + host: str, + port: int, + public_key: Optional[str] = None, + multihash_id: Optional[str] = None, + ): """ Initialize a multiaddress. :param host: ip host of the address - :param host: port number of the address - :param host: hex encoded public key. Must conform to Bitcoin EC encoding standard for Secp256k1 + :param port: port number of the address + :param public_key: hex encoded public key. Must conform to Bitcoin EC encoding standard for Secp256k1 + :param multihash_id: a multihash of the public key """ self._host = host self._port = port - try: - VerifyingKey._from_compressed(_hex_to_bytes(public_key), curves.SECP256k1) - except keys.MalformedPointError as e: # pragma: no cover - raise Exception("Malformed public key:{}".format(str(e))) - - self._public_key = public_key - self._peerid = self.compute_peerid(self._public_key) + if public_key is not None: + try: + VerifyingKey._from_compressed( + _hex_to_bytes(public_key), curves.SECP256k1 + ) + except keys.MalformedPointError as e: # pragma: no cover + raise ValueError( + "Malformed public key '{}': {}".format(public_key, str(e)) + ) + + self._public_key = public_key + self._peerid = self.compute_peerid(self._public_key) + elif multihash_id is not None: + try: + multihash.decode(base58.b58decode(multihash_id)) + except Exception as e: + raise ValueError( + "Malformed multihash '{}': {}".format(multihash_id, str(e)) + ) + + self._public_key = "" + self._peerid = multihash_id + else: + raise ValueError( # pragma: no cover + "MultiAddr requires either public_key or multihash_id to be provided." + ) @staticmethod def compute_peerid(public_key: str) -> str: @@ -133,6 +160,19 @@ def compute_peerid(public_key: str) -> str: key_mh = multihash.digest(key_serialized, algo) return base58.b58encode(key_mh.encode()).decode() + @classmethod + def from_string(cls, maddr: str) -> "MultiAddr": + """ + Construct a MultiAddr object from its string format + + :param maddr: multiaddress string + """ + parts = maddr.split("/") + if len(parts) != 7 or not parts[4].isdigit(): + raise ValueError("Malformed multiaddress '{}'".format(maddr)) + + return cls(host=parts[2], port=int(parts[4]), multihash_id=parts[6]) + @property def public_key(self) -> str: """Get the public key.""" @@ -143,6 +183,16 @@ def peer_id(self) -> str: """Get the peer id.""" return self._peerid + @property + def host(self) -> str: + """Get the peer host.""" + return self._host + + @property + def port(self) -> int: + """Get the peer port.""" + return self._port + def format(self) -> str: """Canonical representation of a multiaddress.""" return f"/dns4/{self._host}/tcp/{self._port}/p2p/{self._peerid}" diff --git a/aea/helpers/multiple_executor.py b/aea/helpers/multiple_executor.py index a4d0772c12..2967b3afea 100644 --- a/aea/helpers/multiple_executor.py +++ b/aea/helpers/multiple_executor.py @@ -41,7 +41,7 @@ ) -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) TaskAwaitable = Union[Task, Future] @@ -186,8 +186,6 @@ def stop(self) -> None: self._loop.run_until_complete( self._wait_tasks_complete(skip_exceptions=True) ) - if self._executor_pool: - self._executor_pool.shutdown(wait=True) if self._executor_pool: self._executor_pool.shutdown(wait=True) @@ -211,11 +209,11 @@ async def wait_future(future): try: await future except KeyboardInterrupt: # pragma: nocover - logger.exception("KeyboardInterrupt in task!") + _default_logger.exception("KeyboardInterrupt in task!") if not skip_exceptions: raise except Exception as e: # pylint: disable=broad-except # handle any exception with own code. - logger.exception("Exception in task!") + _default_logger.exception("Exception in task!") if not skip_exceptions: await self._handle_exception(self._future_task[future], e) @@ -236,14 +234,14 @@ async def _handle_exception( :param exc: Exception raised :return: None """ - logger.exception(f"Exception raised during {task.id} running.") - logger.info(f"Exception raised during {task.id} running.") + _default_logger.exception(f"Exception raised during {task.id} running.") + _default_logger.info(f"Exception raised during {task.id} running.") if self._task_fail_policy == ExecutorExceptionPolicies.propagate: raise exc if self._task_fail_policy == ExecutorExceptionPolicies.log_only: pass elif self._task_fail_policy == ExecutorExceptionPolicies.stop_all: - logger.info( + _default_logger.info( "Stopping executor according to fail policy cause exception raised in task" ) self.stop() @@ -393,7 +391,6 @@ def stop(self, timeout: float = 0) -> None: :return: None """ self._executor.stop() - if self._thread is not None: self._thread.join(timeout=timeout) diff --git a/aea/helpers/search/generic.py b/aea/helpers/search/generic.py index 5891d71a3a..ec9abd8c3d 100644 --- a/aea/helpers/search/generic.py +++ b/aea/helpers/search/generic.py @@ -28,7 +28,7 @@ SUPPORTED_TYPES = {"str": str, "int": int, "float": float, "bool": bool} -class GenericDataModel(DataModel): +class GenericDataModel(DataModel): # pylint: disable=too-few-public-methods """Generic data model.""" def __init__(self, data_model_name: str, data_model_attributes: Dict[str, Any]): diff --git a/aea/helpers/search/models.py b/aea/helpers/search/models.py index 164b52dc59..1e615d9474 100644 --- a/aea/helpers/search/models.py +++ b/aea/helpers/search/models.py @@ -30,7 +30,7 @@ from aea.exceptions import enforce -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) class Location: @@ -66,6 +66,12 @@ def __eq__(self, other): return False # pragma: nocover return self.latitude == other.latitude and self.longitude == other.longitude + def __str__(self): + """Get the string representation of the data model.""" + return "Location(latitude={},longitude={})".format( + self.latitude, self.longitude + ) + """ The allowable types that an Attribute can have @@ -117,6 +123,12 @@ def __eq__(self, other): and self.is_required == other.is_required ) + def __str__(self): + """Get the string representation of the data model.""" + return "Attribute(name={},type={},is_required={})".format( + self.name, self.type, self.is_required + ) + class DataModel: """Implements an OEF data model.""" @@ -133,7 +145,7 @@ def __init__(self, name: str, attributes: List[Attribute], description: str = "" attributes, key=lambda x: x.name ) # type: List[Attribute] self._check_validity() - self.attributes_by_name = {a.name: a for a in attributes} + self.attributes_by_name = {a.name: a for a in self.attributes} self.description = description def _check_validity(self): @@ -154,6 +166,12 @@ def __eq__(self, other) -> bool: and self.attributes == other.attributes ) + def __str__(self): + """Get the string representation of the data model.""" + return "DataModel(name={},attributes={},description={})".format( + self.name, {a.name: str(a) for a in self.attributes}, self.description + ) + def generate_data_model( model_name: str, attribute_values: Mapping[str, ATTRIBUTE_TYPES] @@ -268,6 +286,12 @@ def _check_consistency(self): ) ) + def __str__(self): + """Get the string representation of the description.""" + return "Description(values={},data_model={})".format( + self._values, self.data_model + ) + @classmethod def encode( cls, description_protobuf_object, description_object: "Description" @@ -540,6 +564,10 @@ def __eq__(self, other): and self.type == other.type ) + def __str__(self): + """Get the string representation of the constraint type.""" + return "ConstraintType(value={},type={})".format(self.value, self.type) + class ConstraintExpr(ABC): """Implementation of the constraint language to query the OEF node.""" @@ -806,6 +834,12 @@ def __eq__(self, other): and self.constraint_type == other.constraint_type ) + def __str__(self): + """Get the string representation of the constraint.""" + return "Constraint(attribute_name={},constraint_type={})".format( + self.attribute_name, self.constraint_type + ) + class Query: """This class lets you build a query for the OEF.""" @@ -859,7 +893,7 @@ def check_validity(self): ) ) if len(self.constraints) < 1: - logger.warning( + _default_logger.warning( "DEPRECATION WARNING: " "Invalid input value for type '{}': empty list of constraints. The number of " "constraints must be at least 1.".format(type(self).__name__) @@ -878,6 +912,12 @@ def __eq__(self, other): and self.model == other.model ) + def __str__(self): + """Get the string representation of the constraint.""" + return "Query(constraints={},model={})".format( + [str(c) for c in self.constraints], self.model + ) + @classmethod def encode(cls, query_protobuf_object, query_object: "Query") -> None: """ diff --git a/aea/helpers/win32.py b/aea/helpers/win32.py index d48b67874f..dcbaaf1853 100644 --- a/aea/helpers/win32.py +++ b/aea/helpers/win32.py @@ -23,7 +23,7 @@ import platform -logger = logging.getLogger(__file__) +_default_logger = logging.getLogger(__name__) def enable_ctrl_c_support() -> None: # pragma: no cover @@ -34,4 +34,4 @@ def enable_ctrl_c_support() -> None: # pragma: no cover kernel32 = ctypes.WinDLL("kernel32", use_last_error=True) # type: ignore if not kernel32.SetConsoleCtrlHandler(None, False): - logger.debug(f"SetConsoleCtrlHandler Error: {ctypes.get_last_error()}") # type: ignore + _default_logger.debug(f"SetConsoleCtrlHandler Error: {ctypes.get_last_error()}") # type: ignore diff --git a/aea/helpers/yaml_utils.py b/aea/helpers/yaml_utils.py new file mode 100644 index 0000000000..1c4922cefd --- /dev/null +++ b/aea/helpers/yaml_utils.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2020 Fetch.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. +# +# ------------------------------------------------------------------------------ + +"""Helper functions related to YAML loading/dumping.""" +import os +import re +from collections import OrderedDict +from typing import Any, Dict, List, Match, Optional, Sequence, TextIO, cast + +import yaml +from yaml import MappingNode + + +class _AEAYamlLoader(yaml.SafeLoader): + """ + Custom yaml.SafeLoader for the AEA framework. + + It extends the default SafeLoader in two ways: + - loads YAML configurations while *remembering the order of the fields*; + - resolves the environment variables at loading time. + + This class is for internal usage only; please use + the public functions of the module 'yaml_load' and 'yaml_load_all'. + """ + + envvar_matcher = re.compile(r"\${([^}^{]+)\}") + envvar_key = "!envvar" + + def __init__(self, *args, **kwargs): + """ + Initialize the AEAYamlLoader. + + It adds a YAML Loader constructor to use 'OderedDict' to load the files. + """ + super().__init__(*args, **kwargs) + _AEAYamlLoader.add_constructor( + yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, self._construct_mapping + ) + _AEAYamlLoader.add_constructor(self.envvar_key, self._envvar_constructor) + self._add_implicit_resolver_if_not_present_already() + + def _add_implicit_resolver_if_not_present_already(self) -> None: + """Add implicit resolver for environment variables, if not present already.""" + if self.envvar_key not in dict(self.yaml_implicit_resolvers.get(None, [])): + _AEAYamlLoader.add_implicit_resolver( + self.envvar_key, self.envvar_matcher, None + ) + + @staticmethod + def _construct_mapping(loader: "_AEAYamlLoader", node: MappingNode): + """Construct a YAML mapping with OrderedDict.""" + object_pairs_hook = OrderedDict + loader.flatten_mapping(node) + return object_pairs_hook(loader.construct_pairs(node)) + + @staticmethod + def _envvar_constructor(_loader: "_AEAYamlLoader", node: MappingNode) -> str: + """Extract the matched value, expand env variable, and replace the match.""" + node_value = node.value + match = _AEAYamlLoader.envvar_matcher.match(node_value) + match = cast(Match[str], match) + env_var = match.group()[2:-1] + + # check for defaults + var_split = env_var.split(":") + if len(var_split) == 2: + var_name, default_value = var_split + elif len(var_split) == 1: + var_name, default_value = var_split[0], "" + else: + raise ValueError(f"Cannot resolve environment variable '{env_var}'.") + var_name = var_name.strip() + default_value = default_value.strip() + var_value = os.getenv(var_name, default_value) + return var_value + node_value[match.end() :] + + +class _AEAYamlDumper(yaml.SafeDumper): + """ + Custom yaml.SafeDumper for the AEA framework. + + It extends the default SafeDumper so to dump + YAML configurations while *following the order of the fields*. + + This class is for internal usage only; please use + the public functions of the module 'yaml_dump' and 'yaml_dump_all'. + """ + + def __init__(self, *args, **kwargs): + """ + Initialize the AEAYamlDumper. + + It adds a YAML Dumper representer to use 'OderedDict' to dump the files. + """ + super().__init__(*args, **kwargs) + _AEAYamlDumper.add_representer(OrderedDict, self._dict_representer) + + @staticmethod + def _dict_representer(dumper: "_AEAYamlDumper", data: OrderedDict) -> MappingNode: + """Use a custom representer.""" + return dumper.represent_mapping( + yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, data.items() + ) + + +def yaml_load(stream: TextIO) -> Dict[str, Any]: + """ + Load a yaml from a file pointer in an ordered way. + + :param stream: file pointer to the input file. + :return: the dictionary object with the YAML file content. + """ + return yaml.load(stream, Loader=_AEAYamlLoader) # nosec + + +def yaml_load_all(stream: TextIO) -> List[Dict[str, Any]]: + """ + Load a multi-paged yaml from a file pointer in an ordered way. + + :param stream: file pointer to the input file. + :return: the list of dictionary objects with the (multi-paged) YAML file content. + """ + return list(yaml.load_all(stream, Loader=_AEAYamlLoader)) # nosec + + +def yaml_dump(data: Dict, stream: Optional[TextIO] = None) -> None: + """ + Dump YAML data to a yaml file in an ordered way. + + :param data: the data to write. + :param stream: (optional) the file to write on. + :return: None + """ + yaml.dump(data, stream=stream, Dumper=_AEAYamlDumper) # nosec + + +def yaml_dump_all(data: Sequence[Dict], stream: Optional[TextIO] = None) -> None: + """ + Dump YAML data to a yaml file in an ordered way. + + :param data: the data to write. + :param stream: (optional) the file to write on. + :return: None + """ + yaml.dump_all(data, stream=stream, Dumper=_AEAYamlDumper) # nosec diff --git a/aea/launcher.py b/aea/launcher.py index c8af13f718..773d8312f6 100644 --- a/aea/launcher.py +++ b/aea/launcher.py @@ -45,7 +45,7 @@ from aea.runtime import AsyncRuntime -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) def load_agent(agent_dir: Union[PathLike, str]) -> AEA: @@ -86,6 +86,15 @@ def _run_agent( :return: None """ + import asyncio # pylint: disable=import-outside-toplevel + import select # pylint: disable=import-outside-toplevel + import selectors # pylint: disable=import-outside-toplevel + + if hasattr(select, "kqueue"): # pragma: nocover # cause platform specific + selector = selectors.SelectSelector() + loop = asyncio.SelectorEventLoop(selector) # type: ignore + asyncio.set_event_loop(loop) + _set_logger(log_level=log_level) agent = load_agent(agent_dir) @@ -94,23 +103,25 @@ def stop_event_thread(): try: stop_event.wait() except (KeyboardInterrupt, EOFError, BrokenPipeError) as e: # pragma: nocover - logger.error( + _default_logger.error( f"Exception raised in stop_event_thread {e} {type(e)}. Skip it, looks process is closed." ) finally: - agent.stop() + _default_logger.debug("_run_agent: stop event raised. call agent.stop") + agent.runtime.stop() Thread(target=stop_event_thread, daemon=True).start() try: agent.start() except KeyboardInterrupt: # pragma: nocover - logger.debug("_run_agent: keyboard interrupt") + _default_logger.debug("_run_agent: keyboard interrupt") except BaseException as e: # pragma: nocover - logger.exception("exception in _run_agent") + _default_logger.exception("exception in _run_agent") exc = AEAException(f"Raised {type(e)}({e})") exc.__traceback__ = e.__traceback__ raise exc finally: + _default_logger.debug("_run_agent: call agent.stop") agent.stop() @@ -144,7 +155,7 @@ def create_async_task(self, loop: AbstractEventLoop) -> TaskAwaitable: raise ValueError( "Agent runtime is not async compatible. Please use runtime_mode=async" ) - return loop.create_task(self._agent.runtime.run_runtime()) + return loop.create_task(self._agent.runtime.start_and_wait_completed()) @property def id(self) -> Union[PathLike, str]: @@ -181,12 +192,12 @@ def start(self) -> Tuple[Callable, Sequence[Any]]: def stop(self): """Stop task.""" if self._future.done(): - logger.debug("Stop called, but task is already done.") + _default_logger.debug("Stop called, but task is already done.") return try: self._stop_event.set() except (FileNotFoundError, BrokenPipeError, EOFError) as e: # pragma: nocover - logger.error( + _default_logger.error( f"Exception raised in task.stop {e} {type(e)}. Skip it, looks process is closed." ) diff --git a/aea/mail/base.py b/aea/mail/base.py index a2dd3e5b16..7da174f75a 100644 --- a/aea/mail/base.py +++ b/aea/mail/base.py @@ -24,13 +24,13 @@ from urllib.parse import urlparse from aea.common import Address -from aea.configurations.base import PackageId, ProtocolId, PublicId +from aea.configurations.base import PackageId, PublicId from aea.exceptions import enforce from aea.mail import base_pb2 from aea.protocols.base import Message -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) class AEAConnectionError(Exception): @@ -203,7 +203,9 @@ def _get_public_ids_from_uri( f"Invalid package type {package_type} in uri for envelope context." ) except ValueError as e: - logger.debug(f"URI - {uri.path} - not a valid package_id id. Error: {e}") + _default_logger.debug( + f"URI - {uri.path} - not a valid package_id id. Error: {e}" + ) return (skill_id, connection_id) def __str__(self): @@ -312,7 +314,7 @@ def __init__( self, to: Address, sender: Address, - protocol_id: ProtocolId, + protocol_id: PublicId, message: Union[Message, bytes], context: Optional[EnvelopeContext] = None, ): @@ -325,6 +327,10 @@ def __init__( :param message: the protocol-specific message. :param context: the optional envelope context. """ + enforce(isinstance(to, str), f"To must be string. Found '{type(to)}'") + enforce( + isinstance(sender, str), f"Sender must be string. Found '{type(sender)}'" + ) if isinstance(message, Message): message = self._check_consistency(message, to, sender) self._to = to @@ -341,6 +347,7 @@ def to(self) -> Address: @to.setter def to(self, to: Address) -> None: """Set address of receiver.""" + enforce(isinstance(to, str), f"To must be string. Found '{type(to)}'") self._to = to @property @@ -351,15 +358,18 @@ def sender(self) -> Address: @sender.setter def sender(self, sender: Address) -> None: """Set address of sender.""" + enforce( + isinstance(sender, str), f"Sender must be string. Found '{type(sender)}'" + ) self._sender = sender @property - def protocol_id(self) -> ProtocolId: + def protocol_id(self) -> PublicId: """Get protocol id.""" return self._protocol_id @protocol_id.setter - def protocol_id(self, protocol_id: ProtocolId) -> None: + def protocol_id(self, protocol_id: PublicId) -> None: """Set the protocol id.""" self._protocol_id = protocol_id @@ -409,6 +419,16 @@ def connection_id(self) -> Optional[PublicId]: connection_id = self.context.connection_id return connection_id + @property + def is_sender_public_id(self): + """Check if sender is a public id.""" + return PublicId.is_valid_str(self.sender) + + @property + def is_to_public_id(self): + """Check if to is a public id.""" + return PublicId.is_valid_str(self.to) + @staticmethod def _check_consistency(message: Message, to: str, sender: str) -> Message: """Check consistency of sender and to.""" diff --git a/aea/manager.py b/aea/manager.py new file mode 100644 index 0000000000..33257b4d23 --- /dev/null +++ b/aea/manager.py @@ -0,0 +1,597 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2020 Fetch.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 implementation of AEA agents manager.""" +import asyncio +import copy +import os +import threading +from asyncio.tasks import FIRST_COMPLETED +from pathlib import Path +from shutil import rmtree +from threading import Thread +from typing import Callable, Dict, List, Optional + +from aea.aea import AEA +from aea.aea_builder import AEABuilder +from aea.configurations.base import AgentConfig, ComponentId, PackageType, PublicId +from aea.configurations.constants import DEFAULT_LEDGER +from aea.configurations.loader import ConfigLoaders +from aea.configurations.project import AgentAlias, Project +from aea.crypto.helpers import create_private_key + + +class AgentRunAsyncTask: + """Async task wrapper for agent.""" + + def __init__(self, agent: AEA, loop: asyncio.AbstractEventLoop) -> None: + """Init task with agent and loop.""" + self.run_loop: asyncio.AbstractEventLoop = loop + self.caller_loop: asyncio.AbstractEventLoop = loop + self._done_future: Optional[asyncio.Future] = None + self.task: Optional[asyncio.Task] = None + self.agent = agent + + def create_run_loop(self) -> None: + """Create run loop.""" + pass + + def start(self) -> None: + """Start task.""" + self.create_run_loop() + self.task = self.run_loop.create_task(self._run_wrapper()) + self._done_future = asyncio.Future(loop=self.caller_loop) + + def wait(self) -> asyncio.Future: + """Return future to wait task completed.""" + if not self._done_future: # pragma: nocover + raise ValueError("Task not started!") + return self._done_future + + def stop(self) -> None: + """Stop task.""" + if not self.run_loop or not self.task: # pragma: nocover + raise ValueError("Task was not started!") + self.run_loop.call_soon_threadsafe(self.task.cancel) + + async def _run_wrapper(self) -> None: + """Run task internals.""" + if not self._done_future: # pragma: nocover + raise ValueError("Task was not started! please use start method") + exc = None + try: + await self.run() + except asyncio.CancelledError: # pragma: nocover + pass + except Exception as e: # pylint: disable=broad-except + exc = e + finally: + self.caller_loop.call_soon_threadsafe(self._set_result, exc) + + def _set_result(self, exc: Optional[BaseException]) -> None: + """Set result of task execution.""" + if not self._done_future: # pragma: nocover + return + if exc: + self._done_future.set_exception(exc) + else: + self._done_future.set_result(None) + + async def run(self) -> None: + """Run task body.""" + self.agent.runtime.set_loop(self.run_loop) + await self.agent.runtime.run() + + @property + def is_running(self) -> bool: + """Return is task running.""" + return not self.wait().done() + + +class AgentRunThreadTask(AgentRunAsyncTask): + """Threaded wrapper to run agent.""" + + def __init__(self, agent: AEA, loop: asyncio.AbstractEventLoop) -> None: + """Init task with agent and loop.""" + AgentRunAsyncTask.__init__(self, agent, loop) + self._thread: Optional[Thread] = None + + def create_run_loop(self) -> None: + """Create run loop.""" + self.run_loop = asyncio.new_event_loop() + + def start(self) -> None: + """Run task in a dedicated thread.""" + super().start() + self._thread = threading.Thread( + target=self.run_loop.run_until_complete, args=[self.task], daemon=True + ) + self._thread.start() + + +class MultiAgentManager: + """Multi agents manager.""" + + AGENT_DO_NOT_OVERRIDE_VALUES = ["skills", "connections", "protocols", "contracts"] + MODES = ["async", "threaded"] + DEFAULT_TIMEOUT_FOR_BLOCKING_OPERATIONS = 60 + + def __init__(self, working_dir: str, mode: str = "async") -> None: + """ + Initialize manager. + + :param working_dir: directory to store base agents. + """ + self.working_dir = working_dir + self._was_working_dir_created = False + self._is_running = False + self._projects: Dict[PublicId, Project] = {} + self._keys_dir = os.path.abspath(os.path.join(self.working_dir, "keys")) + self._agents: Dict[str, AgentAlias] = {} + self._agents_tasks: Dict[str, AgentRunAsyncTask] = {} + + self._thread: Optional[Thread] = None + self._loop: Optional[asyncio.AbstractEventLoop] = None + self._event: Optional[asyncio.Event] = None + + self._error_callbacks: List[Callable[[str, BaseException], None]] = [] + + if mode not in self.MODES: + raise ValueError( + f'Invalid mode {mode}. Valid modes are {", ".join(self.MODES)}' + ) + self._started_event = threading.Event() + self._mode = mode + + @property + def is_running(self) -> bool: + """Is manager running.""" + return self._is_running + + def _run_thread(self) -> None: + """Run internal thread with own event loop.""" + self._loop = asyncio.new_event_loop() + self._event = asyncio.Event(loop=self._loop) + self._loop.run_until_complete(self._manager_loop()) + + async def _manager_loop(self) -> None: + """Await and control running manager.""" + if not self._event: + raise ValueError("Do not use this method directly, use start_manager.") + + self._started_event.set() + + while self._is_running: + agents_run_tasks_futures = { + task.wait(): agent_name + for agent_name, task in self._agents_tasks.items() + } + wait_tasks = list(agents_run_tasks_futures.keys()) + [self._event.wait()] # type: ignore + done, _ = await asyncio.wait(wait_tasks, return_when=FIRST_COMPLETED) + + if self._event.is_set(): + self._event.clear() + + for task in done: + if task not in agents_run_tasks_futures: + # task not in agents_run_tasks_futures, so it's event_wait, skip it + await task + continue + + agent_name = agents_run_tasks_futures[task] + self._agents_tasks.pop(agent_name) + if task.exception(): + for callback in self._error_callbacks: + callback(agent_name, task.exception()) + else: + await task + + def add_error_callback( + self, error_callback: Callable[[str, BaseException], None] + ) -> None: + """Add error callback to call on error raised.""" + self._error_callbacks.append(error_callback) + + def start_manager(self) -> "MultiAgentManager": + """Start manager.""" + if self._is_running: + return self + + self._ensure_working_dir() + self._started_event.clear() + self._is_running = True + self._thread = Thread(target=self._run_thread, daemon=True) + self._thread.start() + self._started_event.wait(self.DEFAULT_TIMEOUT_FOR_BLOCKING_OPERATIONS) + return self + + def stop_manager(self) -> "MultiAgentManager": + """ + Stop manager. + + Stops all running agents and stop agent. + + :return: None + """ + if not self._is_running: + return self + + if not self._loop or not self._event or not self._thread: # pragma: nocover + raise ValueError("Manager was not started!") + + if not self._thread.is_alive(): # pragma: nocover + return self + + self.stop_all_agents() + + for agent_name in self.list_agents(): + self.remove_agent(agent_name) + + for project in list(self._projects.keys()): + self.remove_project(project) + + self._cleanup() + + self._is_running = False + + self._loop.call_soon_threadsafe(self._event.set) + + if self._thread.ident != threading.get_ident(): + self._thread.join(self.DEFAULT_TIMEOUT_FOR_BLOCKING_OPERATIONS) + + self._thread = None + return self + + def _cleanup(self) -> None: + """Remove workdir if was created.""" + if self._was_working_dir_created and os.path.exists(self.working_dir): + rmtree(self.working_dir) + + def add_project(self, public_id: PublicId) -> "MultiAgentManager": + """Fetch agent project and all dependencies to working_dir.""" + if public_id in self._projects: + raise ValueError(f"Project {public_id} was already added!") + self._projects[public_id] = Project.load(self.working_dir, public_id) + return self + + def remove_project(self, public_id: PublicId) -> "MultiAgentManager": + """Remove agent project.""" + if public_id not in self._projects: + raise ValueError(f"Project {public_id} is not present!") + + if self._projects[public_id].agents: + raise ValueError( + f"Can not remove projects with aliases exists: {self._projects[public_id].agents}" + ) + + self._projects.pop(public_id).remove() + return self + + def list_projects(self) -> List[PublicId]: + """ + List all agents projects added. + + :return: lit of public ids of projects + """ + return list(self._projects.keys()) + + def add_agent( + self, + public_id: PublicId, + agent_name: Optional[str] = None, + agent_overrides: Optional[dict] = None, + component_overrides: Optional[List[dict]] = None, + ) -> "MultiAgentManager": + """ + Create new agent configuration based on project with config overrides applied. + + Alias is stored in memory only! + + :param public_id: base agent project public id + :param agent_name: unique name for the agent + :param agent_overrides: overrides for agent config. + :param component_overrides: overrides for component section. + + :return: manager + """ + agent_name = agent_name or public_id.name + + if agent_name in self._agents: + raise ValueError(f"Agent with name {agent_name} already exists!") + + if public_id not in self._projects: + raise ValueError(f"{public_id} project is not added!") + + project = self._projects[public_id] + + agent_alias = self._build_agent_alias( + project=project, + agent_name=agent_name, + agent_overrides=agent_overrides, + component_overrides=component_overrides, + ) + self._agents[agent_name] = agent_alias + return self + + def list_agents(self, running_only: bool = False) -> List[str]: + """ + List all agents. + + :param running_only: returns only running if set to True + + :return: list of agents names + """ + if running_only: + return [i for i in self._agents.keys() if self._is_agent_running(i)] + return list(self._agents.keys()) + + def remove_agent(self, agent_name: str) -> "MultiAgentManager": + """ + Remove agent alias definition from registry. + + :param agent_name: agent name to remove + + :return: None + """ + if agent_name not in self._agents: + raise ValueError(f"Agent with name {agent_name} does not exist!") + + if self._is_agent_running(agent_name): + raise ValueError("Agent is running. stop it first!") + + agent_alias = self._agents.pop(agent_name) + agent_alias.remove_from_project() + return self + + def start_agent(self, agent_name: str) -> "MultiAgentManager": + """ + Start selected agent. + + :param agent_name: agent name to start + + :return: None + """ + if not self._loop or not self._event: # pragma: nocover + raise ValueError("agent is not started!") + + agent_alias = self._agents.get(agent_name) + + if not agent_alias: + raise ValueError(f"{agent_name} is not registered!") + + if self._is_agent_running(agent_name): + raise ValueError(f"{agent_name} is already started!") + + if self._mode == "async": + task = AgentRunAsyncTask(agent_alias.agent, self._loop) + elif self._mode == "threaded": + task = AgentRunThreadTask(agent_alias.agent, self._loop) + + task.start() + self._agents_tasks[agent_name] = task + self._loop.call_soon_threadsafe(self._event.set) + return self + + def _is_agent_running(self, agent_name: str) -> bool: + """Return is agent running state.""" + if agent_name not in self._agents_tasks: + return False + + task = self._agents_tasks[agent_name] + return task.is_running + + def start_all_agents(self) -> "MultiAgentManager": + """ + Start all not started agents. + + :return: None + """ + self.start_agents( + [ + agent_name + for agent_name in self.list_agents() + if not self._is_agent_running(agent_name) + ] + ) + + return self + + def stop_agent(self, agent_name: str) -> "MultiAgentManager": + """ + Stop running agent. + + :param agent_name: agent name to stop + + :return: None + """ + if not self._is_agent_running(agent_name) or not self._thread or not self._loop: + raise ValueError(f"{agent_name} is not running!") + + agent_task = self._agents_tasks[agent_name] + + if self._thread.ident == threading.get_ident(): # pragma: nocover + # In same thread do not perform blocking operations! + agent_task.stop() + return self + + wait_future = agent_task.wait() + + event = threading.Event() + + def event_set(*args): # pylint: disable=unused-argument + event.set() + + def _add_cb(): + if wait_future.done(): + event_set() # pragma: nocover + else: + wait_future.add_done_callback(event_set) # pramga: nocover + + self._loop.call_soon_threadsafe(_add_cb) + agent_task.stop() + event.wait(self.DEFAULT_TIMEOUT_FOR_BLOCKING_OPERATIONS) + + return self + + def stop_all_agents(self) -> "MultiAgentManager": + """ + Stop all agents running. + + :return: None + """ + agents_list = self.list_agents(running_only=True) + self.stop_agents(agents_list) + + return self + + def stop_agents(self, agent_names: List[str]) -> "MultiAgentManager": + """ + Stop specified agents. + + :return: None + """ + for agent_name in agent_names: + if not self._is_agent_running(agent_name): + raise ValueError(f"{agent_name} is not running!") + + for agent_name in agent_names: + self.stop_agent(agent_name) + + return self + + def start_agents(self, agent_names: List[str]) -> "MultiAgentManager": + """ + Stop specified agents. + + :return: None + """ + for agent_name in agent_names: + self.start_agent(agent_name) + + return self + + def get_agent_alias(self, agent_name: str) -> AgentAlias: + """ + Return details about agent alias definition. + + :return: AgentAlias + """ + if agent_name not in self._agents: # pragma: nocover + raise ValueError(f"Agent with name {agent_name} does not exist!") + return self._agents[agent_name] + + def _ensure_working_dir(self) -> None: + """Create working dir if needed.""" + if not os.path.exists(self.working_dir): + os.makedirs(self.working_dir) + self._was_working_dir_created = True + + if not os.path.isdir(self.working_dir): # pragma: nocover + raise ValueError(f"{self.working_dir} is not a directory!") + os.makedirs(self._keys_dir) + + def _build_agent_alias( + self, + project: Project, + agent_name: str, + agent_overrides: Optional[dict] = None, + component_overrides: Optional[List[dict]] = None, + ) -> AgentAlias: + """Create agent alias for project, with given name and overrided values.""" + json_config = self._make_config( + project.path, agent_overrides, component_overrides + ) + + builder = AEABuilder.from_config_json(json_config, project.path) + builder.set_name(agent_name) + builder.set_runtime_mode("threaded") + + if not builder.private_key_paths: + default_ledger = json_config[0].get("default_ledger", DEFAULT_LEDGER) + builder.add_private_key( + default_ledger, self._create_private_key(agent_name, default_ledger) + ) + agent = builder.build() + return AgentAlias(project, agent_name, json_config, agent, builder) + + def install_pypi_dependencies(self) -> None: + """Install dependencies for every project has at least one agent alias.""" + for project in self._projects.values(): + self._install_pypi_dependencies_for_project(project) + + def _install_pypi_dependencies_for_project(self, project: Project) -> None: + """Install dependencies for project specified if has at least one agent alias.""" + if not project.agents: + return + self._install_pypi_dependencies_for_agent(list(project.agents)[0]) + + def _install_pypi_dependencies_for_agent(self, agent_name: str) -> None: + """Install dependencies for the agent registered.""" + self._agents[agent_name].builder.install_pypi_dependencies() + + def _make_config( + self, + project_path: str, + agent_overrides: Optional[dict] = None, + component_overrides: Optional[List[dict]] = None, + ) -> List[dict]: + """Make new config based on project's config with overrides applied.""" + agent_overrides = agent_overrides or {} + component_overrides = component_overrides or [] + + if any([key in agent_overrides for key in self.AGENT_DO_NOT_OVERRIDE_VALUES]): + raise ValueError( + 'Do not override any of {" ".join(self.AGENT_DO_NOT_OVERRIDE_VALUES)}' + ) + + agent_configuration_file_path: Path = AEABuilder.get_configuration_file_path( + project_path + ) + loader = ConfigLoaders.from_package_type(PackageType.AGENT) + with agent_configuration_file_path.open() as fp: + agent_config: AgentConfig = loader.load(fp) + + # prepare configuration overrides + # - agent part + agent_update_dictionary: Dict = dict(**agent_overrides) + # - components part + components_configs: Dict[ComponentId, Dict] = {} + for obj in component_overrides: + obj = copy.copy(obj) + author, name, version = ( + obj.pop("author"), + obj.pop("name"), + obj.pop("version"), + ) + component_id = ComponentId(obj.pop("type"), PublicId(author, name, version)) + components_configs[component_id] = obj + agent_update_dictionary["component_configurations"] = components_configs + # do the override (and valiation) + agent_config.update(agent_update_dictionary) + + # return the multi-paged JSON object. + json_data = agent_config.ordered_json + result: List[Dict] = [json_data] + json_data.pop("component_configurations") + return result + + def _create_private_key(self, name, ledger) -> str: + """Create new key for agent alias in working dir keys dir.""" + path = os.path.join(self._keys_dir, f"{name}_{ledger}_private.key") + create_private_key(ledger, path) + return path diff --git a/aea/multiplexer.py b/aea/multiplexer.py index e58db114a6..a545b2afff 100644 --- a/aea/multiplexer.py +++ b/aea/multiplexer.py @@ -29,11 +29,10 @@ from aea.connections.base import Connection, ConnectionStates from aea.exceptions import enforce from aea.helpers.async_friendly_queue import AsyncFriendlyQueue -from aea.helpers.async_utils import AsyncState, ThreadedAsyncRunner +from aea.helpers.async_utils import AsyncState, Runnable, ThreadedAsyncRunner from aea.helpers.exception_policy import ExceptionPolicyEnum -from aea.helpers.logging import WithLogger +from aea.helpers.logging import WithLogger, get_logger from aea.mail.base import AEAConnectionError, Empty, Envelope, EnvelopeContext -from aea.mail.base import logger as default_logger from aea.protocols.base import Message @@ -67,7 +66,7 @@ def is_disconnecting(self) -> bool: # pragma: nocover return self.get() == ConnectionStates.disconnecting -class AsyncMultiplexer(WithLogger): +class AsyncMultiplexer(Runnable, WithLogger): """This class can handle multiple connections at once.""" def __init__( @@ -76,6 +75,8 @@ def __init__( default_connection_index: int = 0, loop: Optional[AbstractEventLoop] = None, exception_policy: ExceptionPolicyEnum = ExceptionPolicyEnum.propagate, + threaded: bool = False, + agent_name: str = "standalone", ): """ Initialize the connection multiplexer. @@ -87,8 +88,10 @@ def __init__( :param loop: the event loop to run the multiplexer. If None, a new event loop is created. :param agent_name: the name of the agent that owns the multiplexer, for logging purposes. """ - super().__init__(default_logger) self._exception_policy: ExceptionPolicyEnum = exception_policy + logger = get_logger(__name__, agent_name) + WithLogger.__init__(self, logger=logger) + Runnable.__init__(self, loop=loop, threaded=threaded) self._connections: List[Connection] = [] self._id_to_connection: Dict[PublicId, Connection] = {} self._default_connection: Optional[Connection] = None @@ -102,8 +105,22 @@ def __init__( self._recv_loop_task = None # type: Optional[asyncio.Task] self._send_loop_task = None # type: Optional[asyncio.Task] self._default_routing = {} # type: Dict[PublicId, PublicId] + self._loop: asyncio.AbstractEventLoop = loop if loop is not None else asyncio.new_event_loop() + self._lock: asyncio.Lock = asyncio.Lock(loop=self._loop) + self.set_loop(self._loop) + + async def run(self) -> None: + """Run multiplexer connect and recv/send tasks.""" + self.set_loop(asyncio.get_event_loop()) + try: + await self.connect() + + if not self._recv_loop_task or not self._send_loop_task: + raise ValueError("Multiplexer is not connected properly.") - self.set_loop(loop if loop is not None else asyncio.new_event_loop()) + await asyncio.gather(self._recv_loop_task, self._send_loop_task) + finally: + await self.disconnect() @property def default_connection(self) -> Optional[Connection]: @@ -117,8 +134,8 @@ def set_loop(self, loop: AbstractEventLoop) -> None: :param loop: asyncio event loop. :return: None """ - self._loop: AbstractEventLoop = loop - self._lock: asyncio.Lock = asyncio.Lock(loop=self._loop) + self._loop = loop + self._lock = asyncio.Lock(loop=self._loop) def _initialize_connections_if_any( self, connections: Optional[Sequence[Connection]], default_connection_index: int @@ -226,10 +243,12 @@ def connection_status(self) -> MultiplexerStatus: async def connect(self) -> None: """Connect the multiplexer.""" + self._loop = asyncio.get_event_loop() self.logger.debug("Multiplexer connecting...") self._connection_consistency_checks() self._set_default_connection_if_none() self._out_queue = asyncio.Queue() + async with self._lock: if self.connection_status.is_connected: self.logger.debug("Multiplexer already connected.") @@ -240,13 +259,16 @@ async def connect(self) -> None: if all(c.is_connected for c in self._connections): self.connection_status.set(ConnectionStates.connected) - else: + else: # pragma: nocover raise AEAConnectionError("Failed to connect the multiplexer.") self._recv_loop_task = self._loop.create_task(self._receiving_loop()) self._send_loop_task = self._loop.create_task(self._send_loop()) self.logger.debug("Multiplexer connected and running.") - except (CancelledError, Exception): + except (CancelledError, asyncio.CancelledError): + await self._stop() + raise asyncio.CancelledError() + except Exception: self.logger.exception("Exception on connect:") await self._stop() raise AEAConnectionError("Failed to connect the multiplexer.") @@ -269,19 +291,22 @@ async def disconnect(self) -> None: async def _stop_receive_send_loops(self) -> None: """Stop receive and send loops.""" self.logger.debug("Stopping recv loop...") + if self._recv_loop_task: self._recv_loop_task.cancel() - with suppress(Exception): + with suppress(Exception, asyncio.CancelledError): await self._recv_loop_task + self._recv_loop_task = None self.logger.debug("Recv loop stopped.") self.logger.debug("Stopping send loop...") + if self._send_loop_task: # send a 'stop' token (a None value) to wake up the coroutine waiting for outgoing envelopes. await self.out_queue.put(None) self._send_loop_task.cancel() - with suppress(Exception): + with suppress(Exception, asyncio.CancelledError): await self._send_loop_task self._send_loop_task = None @@ -320,14 +345,13 @@ async def _connect_all(self) -> None: await self._connect_one(connection_id) connected.append(connection_id) except Exception as e: # pylint: disable=broad-except - self.logger.error( - "Error while connecting {}: {}".format( - str(type(connection)), str(e) + if not isinstance(e, (asyncio.CancelledError, CancelledError)): + self.logger.exception( + "Error while connecting {}: {}".format( + str(type(connection)), repr(e) + ) ) - ) - for c in connected: - await self._disconnect_one(c) - break + raise self.logger.debug("Multiplexer connections are set.") async def _connect_one(self, connection_id: PublicId) -> None: @@ -356,9 +380,9 @@ async def _disconnect_all(self) -> None: self.logger.debug("Tear the multiplexer connections down.") for connection_id, connection in self._id_to_connection.items(): try: - await self._disconnect_one(connection_id) + await asyncio.wait_for(self._disconnect_one(connection_id), timeout=5) except Exception as e: # pylint: disable=broad-except - self.logger.error( + self.logger.exception( "Error while disconnecting {}: {}".format( str(type(connection)), str(e) ) @@ -393,8 +417,8 @@ async def _send_loop(self) -> None: ) return - while self.is_connected: - try: + try: + while self.is_connected: self.logger.debug("Waiting for outgoing envelopes...") envelope = await self.out_queue.get() if envelope is None: # pragma: nocover @@ -403,15 +427,17 @@ async def _send_loop(self) -> None: ) return None self.logger.debug("Sending envelope {}".format(str(envelope))) - await self._send(envelope) - except asyncio.CancelledError: - self.logger.debug("Sending loop cancelled.") - return - except AEAConnectionError as e: - self.logger.error(str(e)) - except Exception as e: # pylint: disable=broad-except # pragma: nocover - self.logger.error("Error in the sending loop: {}".format(str(e))) - raise + try: + await self._send(envelope) + except AEAConnectionError as e: + self.logger.error(str(e)) + + except asyncio.CancelledError: + self.logger.debug("Sending loop cancelled.") + raise + except Exception as e: # pylint: disable=broad-except # pragma: nocover + self.logger.error("Error in the sending loop: {}".format(str(e))) + raise async def _receiving_loop(self) -> None: """Process incoming envelopes.""" @@ -420,8 +446,8 @@ async def _receiving_loop(self) -> None: asyncio.ensure_future(conn.receive()): conn for conn in self.connections } - while self.connection_status.is_connected and len(task_to_connection) > 0: - try: + try: + while self.connection_status.is_connected and len(task_to_connection) > 0: done, _pending = await asyncio.wait( task_to_connection.keys(), return_when=asyncio.FIRST_COMPLETED ) @@ -438,17 +464,17 @@ async def _receiving_loop(self) -> None: new_task = asyncio.ensure_future(connection.receive()) task_to_connection[new_task] = connection - except asyncio.CancelledError: # pragma: nocover - self.logger.debug("Receiving loop cancelled.") - break - except Exception as e: # pylint: disable=broad-except - self.logger.exception("Error in the receiving loop: {}".format(str(e))) - break - - # cancel all the receiving tasks. - for t in task_to_connection.keys(): - t.cancel() - self.logger.debug("Receiving loop terminated.") + except asyncio.CancelledError: # pragma: nocover + self.logger.debug("Receiving loop cancelled.") + raise + except Exception as e: # pylint: disable=broad-except + self.logger.exception("Error in the receiving loop: {}".format(str(e))) + raise + finally: + # cancel all the receiving tasks. + for t in task_to_connection.keys(): + t.cancel() + self.logger.debug("Receiving loop terminated.") async def _send(self, envelope: Envelope) -> None: """ @@ -557,7 +583,29 @@ def put(self, envelope: Envelope) -> None: :param envelope: the envelope to be sent. :return: None """ - self.out_queue.put_nowait(envelope) + if self._threaded: + self._loop.call_soon_threadsafe(self.out_queue.put_nowait, envelope) + else: + self.out_queue.put_nowait(envelope) + + def setup( + self, + connections: Collection[Connection], + default_routing: Optional[Dict[PublicId, PublicId]] = None, + default_connection: Optional[PublicId] = None, + ) -> None: + """ + Set up the multiplexer. + + :param connections: the connections to use. It will replace the other ones. + :param default_routing: the default routing. + :param default_connection: the default connection. + :return: None. + """ + self.default_routing = default_routing or {} + self._connections = [] + for c in connections: + self.add_connection(c, c.public_id == default_connection) class Multiplexer(AsyncMultiplexer): @@ -635,30 +683,11 @@ def put(self, envelope: Envelope) -> None: # type: ignore # cause overrides co """ self._thread_runner.call(super()._put(envelope)) # .result(240) - def setup( - self, - connections: Collection[Connection], - default_routing: Optional[Dict[PublicId, PublicId]] = None, - default_connection: Optional[PublicId] = None, - ) -> None: - """ - Set up the multiplexer. - - :param connections: the connections to use. It will replace the other ones. - :param default_routing: the default routing. - :param default_connection: the default connection. - :return: None. - """ - self.default_routing = default_routing or {} - self._connections = [] - for c in connections: - self.add_connection(c, c.public_id == default_connection) - class InBox: """A queue from where you can only consume envelopes.""" - def __init__(self, multiplexer: Multiplexer): + def __init__(self, multiplexer: AsyncMultiplexer): """ Initialize the inbox. @@ -745,7 +774,7 @@ async def async_wait(self) -> None: class OutBox: """A queue from where you can only enqueue envelopes.""" - def __init__(self, multiplexer: Multiplexer): + def __init__(self, multiplexer: AsyncMultiplexer): """ Initialize the outbox. diff --git a/aea/protocols/base.py b/aea/protocols/base.py index b942d88f21..039cf1f79b 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -38,7 +38,7 @@ from aea.mail.base_pb2 import Message as ProtobufMessage -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) Address = str @@ -70,7 +70,7 @@ def __init__(self, body: Optional[Dict] = None, **kwargs): try: self._is_consistent() except Exception as e: # pylint: disable=broad-except - logger.error(e) + _default_logger.error(e) @property def has_sender(self) -> bool: @@ -92,6 +92,10 @@ def sender(self) -> Address: def sender(self, sender: Address) -> None: """Set the sender of the message.""" enforce(self._sender is None, "Sender already set.") + enforce( + isinstance(sender, str), + f"Sender must be string type. Found '{type(sender)}'", + ) self._sender = sender @property @@ -110,6 +114,7 @@ def to(self) -> Address: def to(self, to: Address) -> None: """Set address of receiver.""" enforce(self._to is None, "To already set.") + enforce(isinstance(to, str), f"To must be string type. Found '{type(to)}'") self._to = to @property diff --git a/aea/protocols/default/README.md b/aea/protocols/default/README.md index ef5a05da42..d691d80686 100644 --- a/aea/protocols/default/README.md +++ b/aea/protocols/default/README.md @@ -10,7 +10,7 @@ This is a protocol for two agents exchanging any bytes messages. --- name: default author: fetchai -version: 0.5.0 +version: 0.7.0 description: A protocol for exchanging any bytes message. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' diff --git a/aea/protocols/default/message.py b/aea/protocols/default/message.py index b6c2b75073..7d4c539a80 100644 --- a/aea/protocols/default/message.py +++ b/aea/protocols/default/message.py @@ -28,7 +28,7 @@ from aea.protocols.default.custom_types import ErrorCode as CustomErrorCode -logger = logging.getLogger("aea.protocols.default.message") +_default_logger = logging.getLogger("aea.protocols.default.message") DEFAULT_BODY_SIZE = 4 @@ -36,7 +36,7 @@ class DefaultMessage(Message): """A protocol for exchanging any bytes message.""" - protocol_id = ProtocolId.from_str("fetchai/default:0.5.0") + protocol_id = ProtocolId.from_str("fetchai/default:0.7.0") ErrorCode = CustomErrorCode @@ -240,7 +240,7 @@ def _is_consistent(self) -> bool: ), ) except (AEAEnforceError, ValueError, KeyError) as e: - logger.error(str(e)) + _default_logger.error(str(e)) return False return True diff --git a/aea/protocols/default/protocol.yaml b/aea/protocols/default/protocol.yaml index 9a3b55535c..775184e6cf 100644 --- a/aea/protocols/default/protocol.yaml +++ b/aea/protocols/default/protocol.yaml @@ -1,18 +1,18 @@ name: default author: fetchai -version: 0.5.0 +version: 0.7.0 type: protocol description: A protocol for exchanging any bytes message. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: - README.md: QmP3q9463opixzdv17QXkCSQvgR8KJXgLAVkfUPpdHJzPv + README.md: Qma6jLUtwFdNMLAq5Z79tAv8vgBBDjw3RVUfr5ab36nAug __init__.py: QmWpWuGcXu2SodVGUZiAdMrF8Tn7MAPDbiGh7vd9nEfEX6 custom_types.py: QmRcgwDdTxkSHyfF9eoMtsb5P5GJDm4oyLq5W6ZBko1MFU default.proto: QmbbAXpav8jfU1r59afGbLAj3FpPXEwWuezPocAMyqcfax default_pb2.py: QmT2nZidwAd5jkXyx3UWkapUpsiEfjwUr6a8DKboSujokt dialogues.py: Qmc991snbS7DwFxo1cKcq1rQ2uj7y8ukp14kfe2zve387C - message.py: QmWzSGcSeRGaHERQg6E8QaYDiCqmeJYdFqE7rrwMBP7mP2 + message.py: QmUtVZN6HRPXNjA1tAxzSEJ6QJSfGj13tHku6sJ2p9Hops serialization.py: QmcRk22hZ49s2HLUNPXBYWTnUkFjuNnVwVWp3yfxfbaQDd fingerprint_ignore_patterns: [] dependencies: diff --git a/aea/protocols/dialogue/base.py b/aea/protocols/dialogue/base.py index 52b154609b..8be684e778 100644 --- a/aea/protocols/dialogue/base.py +++ b/aea/protocols/dialogue/base.py @@ -27,16 +27,36 @@ import itertools import secrets +import sys from abc import ABC +from collections import namedtuple from enum import Enum from inspect import signature from typing import Callable, Dict, FrozenSet, List, Optional, Set, Tuple, Type, cast from aea.common import Address -from aea.exceptions import enforce +from aea.exceptions import AEAEnforceError, enforce from aea.protocols.base import Message +if sys.version_info[0] < 3 or (sys.version_info[0] == 3 and sys.version_info[1] < 7): + DialogueMessage = namedtuple( # pragma: no cover + "DialogueMessage", + ["performative", "contents", "is_incoming", "target"], + rename=False, + module="aea.protocols.dialogues.base", + ) + DialogueMessage.__new__.__defaults__ = (dict(), None, None) # pragma: no cover +else: + DialogueMessage = namedtuple( # pylint: disable=unexpected-keyword-arg + "DialogueMessage", + ["performative", "contents", "is_incoming", "target"], + rename=False, + defaults=[dict(), None, None], + module="aea.protocols.dialogues.base", + ) + + class InvalidDialogueMessage(Exception): """Exception for adding invalid message to a dialogue.""" @@ -359,6 +379,15 @@ def rules(self) -> "Rules": raise ValueError("Rules is not set.") return self._rules + @property + def message_class(self) -> Type[Message]: + """ + Get the message class. + + :return: the message class + """ + return self._message_class + @property def is_self_initiated(self) -> bool: """ @@ -570,6 +599,7 @@ def reply( self, performative: Message.Performative, target_message: Optional[Message] = None, + target: Optional[int] = None, **kwargs, ) -> Message: """ @@ -578,6 +608,7 @@ def reply( Note if no target_message is provided, the last message in the dialogue will be replied to. :param target_message: the message to reply to. + :param target: the id of the message to reply to. :param performative: the performative of the reply message. :param kwargs: the content of the reply message. @@ -587,20 +618,25 @@ def reply( if last_message is None: raise ValueError("Cannot reply in an empty dialogue!") - if target_message is None: - target_message = last_message - else: - enforce( - self._has_message( - target_message # type: ignore - ), - "The target message does not exist in this dialogue.", - ) + if target_message is None and target is None: + target = last_message.message_id + elif target_message is not None and target is None: + target = target_message.message_id + elif target_message is not None and target is not None: + if target != target_message.message_id: + raise AEAEnforceError( + "The provided target and target_message do not match." + ) + + enforce( + self._has_message_id(target), # type: ignore + "The target message does not exist in this dialogue.", + ) reply = self._message_class( dialogue_reference=self.dialogue_label.dialogue_reference, message_id=last_message.message_id + 1, - target=target_message.message_id, + target=target, performative=performative, **kwargs, ) @@ -996,6 +1032,24 @@ def dialogue_stats(self) -> DialogueStats: """ return self._dialogue_stats + @property + def message_class(self) -> Type[Message]: + """ + Get the message class. + + :return: the message class + """ + return self._message_class + + @property + def dialogue_class(self) -> Type[Dialogue]: + """ + Get the dialogue class. + + :return: the dialogue class + """ + return self._dialogue_class + def get_dialogues_with_counterparty(self, counterparty: Address) -> List[Dialogue]: """ Get the dialogues by address. @@ -1035,13 +1089,14 @@ def _counterparty_from_message(self, message: Message) -> Address: ) return counterparty - def new_self_initiated_dialogue_reference(self) -> Tuple[str, str]: + @classmethod + def new_self_initiated_dialogue_reference(cls) -> Tuple[str, str]: """ Return a dialogue label for a new self initiated dialogue. :return: the next nonce """ - return self._generate_dialogue_nonce(), Dialogue.UNASSIGNED_DIALOGUE_REFERENCE + return cls._generate_dialogue_nonce(), Dialogue.UNASSIGNED_DIALOGUE_REFERENCE def create( self, counterparty: Address, performative: Message.Performative, **kwargs, @@ -1141,7 +1196,7 @@ def update(self, message: Message) -> Optional[Dialogue]: ) enforce( message.to == self.self_address, - "Message to and dialogue self address do not match.", + f"Message to and dialogue self address do not match. Got 'to={message.to}' expected 'to={self.self_address}'.", ) dialogue_reference = message.dialogue_reference diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index a8cd9d98e7..16c6157d1a 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -20,7 +20,6 @@ # pylint: skip-file import itertools -import logging import os import shutil from datetime import date @@ -55,9 +54,6 @@ from aea.protocols.generator.extract_specification import extract -logger = logging.getLogger(__name__) - - def _copyright_header_str(author: str) -> str: """ Produce the copyright header text for a protocol. @@ -614,7 +610,7 @@ def _message_class_str(self) -> str: cls_str += self._import_from_custom_types_module() cls_str += ( self.indent - + '\nlogger = logging.getLogger("aea.packages.{}.protocols.{}.message")\n'.format( + + '\n_default_logger = logging.getLogger("aea.packages.{}.protocols.{}.message")\n'.format( self.protocol_specification.author, self.protocol_specification.name ) ) @@ -876,7 +872,7 @@ def _message_class_str(self) -> str: self.indent + "except (AEAEnforceError, ValueError, KeyError) as e:\n" ) self._change_indent(1) - cls_str += self.indent + "logger.error(str(e))\n" + cls_str += self.indent + "_default_logger.error(str(e))\n" cls_str += self.indent + "return False\n\n" self._change_indent(-1) cls_str += self.indent + "return True\n" @@ -1926,7 +1922,7 @@ def generate_protobuf_only_mode(self) -> None: shutil.rmtree(output_folder) raise SyntaxError("Error in the protocol buffer schema code:\n" + msg) - def generate_full_mode(self) -> None: + def generate_full_mode(self) -> Optional[str]: """ Run the generator in "full" mode: @@ -1936,7 +1932,7 @@ def generate_full_mode(self) -> None: d) applies black formatting e) applies isort formatting - :return: None + :return: optional warning message """ # Run protobuf only mode self.generate_protobuf_only_mode() @@ -1988,13 +1984,14 @@ def generate_full_mode(self) -> None: try_run_isort_formatting(self.path_to_generated_protocol_package) # Warn if specification has custom types + incomplete_generation_warning_msg = None # type: Optional[str] if len(self.spec.all_custom_types) > 0: incomplete_generation_warning_msg = "The generated protocol is incomplete, because the protocol specification contains the following custom types: {}. Update the generated '{}' file with the appropriate implementations of these custom types.".format( self.spec.all_custom_types, CUSTOM_TYPES_DOT_PY_FILE_NAME ) - logger.warning(incomplete_generation_warning_msg) + return incomplete_generation_warning_msg - def generate(self, protobuf_only: bool = False) -> None: + def generate(self, protobuf_only: bool = False) -> Optional[str]: """ Run the generator. If in "full" mode (protobuf_only is False), it: @@ -2007,9 +2004,11 @@ def generate(self, protobuf_only: bool = False) -> None: If in "protobuf only" mode (protobuf_only is True), it only does a) and b). :param protobuf_only: mode of running the generator. - :return: None + :return: optional warning message. """ + message = None if protobuf_only: self.generate_protobuf_only_mode() else: - self.generate_full_mode() + message = self.generate_full_mode() + return message diff --git a/aea/protocols/generator/extract_specification.py b/aea/protocols/generator/extract_specification.py index e3f42cf45c..550c3d5dc1 100644 --- a/aea/protocols/generator/extract_specification.py +++ b/aea/protocols/generator/extract_specification.py @@ -143,7 +143,7 @@ def _specification_type_to_python_type(specification_type: str) -> str: return python_type -class PythonicProtocolSpecification: +class PythonicProtocolSpecification: # pylint: disable=too-few-public-methods """This class represents a protocol specification in python.""" def __init__(self) -> None: diff --git a/aea/protocols/signing/README.md b/aea/protocols/signing/README.md index 77b43d1b22..209b894bcd 100644 --- a/aea/protocols/signing/README.md +++ b/aea/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: 0.3.0 +version: 0.5.0 description: A protocol for communication between skills and decision maker. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' diff --git a/aea/protocols/signing/message.py b/aea/protocols/signing/message.py index cf7cd943af..bad4c94cd6 100644 --- a/aea/protocols/signing/message.py +++ b/aea/protocols/signing/message.py @@ -35,7 +35,7 @@ from aea.protocols.signing.custom_types import Terms as CustomTerms -logger = logging.getLogger("aea.protocols.signing.message") +_default_logger = logging.getLogger("aea.protocols.signing.message") DEFAULT_BODY_SIZE = 4 @@ -43,7 +43,7 @@ class SigningMessage(Message): """A protocol for communication between skills and decision maker.""" - protocol_id = ProtocolId.from_str("fetchai/signing:0.3.0") + protocol_id = ProtocolId.from_str("fetchai/signing:0.5.0") ErrorCode = CustomErrorCode @@ -292,7 +292,7 @@ def _is_consistent(self) -> bool: ), ) except (AEAEnforceError, ValueError, KeyError) as e: - logger.error(str(e)) + _default_logger.error(str(e)) return False return True diff --git a/aea/protocols/signing/protocol.yaml b/aea/protocols/signing/protocol.yaml index 375594d1a5..3088221b47 100644 --- a/aea/protocols/signing/protocol.yaml +++ b/aea/protocols/signing/protocol.yaml @@ -1,16 +1,16 @@ name: signing author: fetchai -version: 0.3.0 +version: 0.5.0 type: protocol description: A protocol for communication between skills and decision maker. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: - README.md: QmSoa5dnxz53GWpWT2VvcRG4asVbzA8JzguiVgwqiLtguM + README.md: QmcZzuS6qt2wE75iznTytDp8NGWTBR7jsXonjNWYhYAHcw __init__.py: Qmd7JYjcrD95jdYfSZs6j7UX5TPZfPYXuTFrUzS3FHCxhS custom_types.py: Qmc7sAyCQbAaVs5dZf9hFkTrB2BG8VAioWzbyKBAybrQ1J dialogues.py: QmQ1WKs3Dn15oDSwpc4N8hdADLxrn76U4X5SiLAmyGiPPY - message.py: QmP3La3Bh5Q8bbecXWpDHj25rp7Eiv6nuvVNMqURSp4Dn4 + message.py: QmWvGqk5NU3uyy55rqpQPHQGeoUjV6cP85z9dF3uPbpBJc serialization.py: QmT4wm2vP8QUFYCCaCCNNe4kMGgPCsFqkBTvKJFUYDJC4S signing.proto: QmZN9CmcfXCBiMQd9GTG81LadsbVQQ7j5pLFxEiQsQ4Sqk signing_pb2.py: QmYQH8PDeC25ysrxeqh4nNv38bUL7jv9gRhta9gaNiXLL2 diff --git a/aea/protocols/state_update/README.md b/aea/protocols/state_update/README.md index 3ba3eedfd7..f8bbfa66f8 100644 --- a/aea/protocols/state_update/README.md +++ b/aea/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: 0.3.0 +version: 0.5.0 description: A protocol for state updates to the decision maker state. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' diff --git a/aea/protocols/state_update/message.py b/aea/protocols/state_update/message.py index 29fb679368..871610ebd7 100644 --- a/aea/protocols/state_update/message.py +++ b/aea/protocols/state_update/message.py @@ -27,7 +27,7 @@ from aea.protocols.base import Message -logger = logging.getLogger("aea.protocols.state_update.message") +_default_logger = logging.getLogger("aea.protocols.state_update.message") DEFAULT_BODY_SIZE = 4 @@ -35,7 +35,7 @@ class StateUpdateMessage(Message): """A protocol for state updates to the decision maker state.""" - protocol_id = ProtocolId.from_str("fetchai/state_update:0.3.0") + protocol_id = ProtocolId.from_str("fetchai/state_update:0.5.0") class Performative(Message.Performative): """Performatives for the state_update protocol.""" @@ -344,7 +344,7 @@ def _is_consistent(self) -> bool: ), ) except (AEAEnforceError, ValueError, KeyError) as e: - logger.error(str(e)) + _default_logger.error(str(e)) return False return True diff --git a/aea/protocols/state_update/protocol.yaml b/aea/protocols/state_update/protocol.yaml index c996d46d8f..0ac78e635a 100644 --- a/aea/protocols/state_update/protocol.yaml +++ b/aea/protocols/state_update/protocol.yaml @@ -1,15 +1,15 @@ name: state_update author: fetchai -version: 0.3.0 +version: 0.5.0 type: protocol description: A protocol for state updates to the decision maker state. license: Apache-2.0 aea_version: '>=0.6.0, <0.7.0' fingerprint: - README.md: Qmc12hnCshAE3TL9ba4vo6L8ZZhynyfhEUoStJggRrbimc + README.md: QmZaiA3tRSsvofPcAdjKEZZh9RAyZL9Wk8vXHUoGy9enLi __init__.py: QmUrvqDr24Ph1nnUqjTUPh9QoftuTsef3Dj3yzPUMY38fu dialogues.py: Qmd59WgpFccLn1zhpLdwm3zDCmCsjSoQXVn6M7PgFwwkgR - message.py: QmWiFo7D5szGwdvewzb7sfawH3k2i3NHfrAFfdSRvWRNJf + message.py: QmPrvSe5NPm32m6B6bB3fSpLUmnk7NzUFTe9efPENRBWs3 serialization.py: QmS3Tesi18wvwoxjgC4iiqkdJUMAsYSiz8Vq6oHNzr3kxh state_update.proto: QmX1YJaiCeEdURVzu8qx5w2gq5gs2V9cy8dJ7jg79poQLs state_update_pb2.py: QmUgSCEzb6gZZBBYyLqMXxZG2Awt8znjQXeHMuX7DDdTpE diff --git a/aea/registries/base.py b/aea/registries/base.py index a8da064dba..93e86103cb 100644 --- a/aea/registries/base.py +++ b/aea/registries/base.py @@ -20,7 +20,6 @@ """This module contains registries.""" import copy -import logging from abc import ABC, abstractmethod from operator import itemgetter from typing import Dict, Generic, List, Optional, Set, Tuple, TypeVar, cast @@ -33,12 +32,10 @@ PublicId, SkillId, ) -from aea.helpers.logging import WithLogger +from aea.helpers.logging import WithLogger, get_logger from aea.skills.base import Behaviour, Handler, Model -logger = logging.getLogger(__name__) - Item = TypeVar("Item") ItemId = TypeVar("ItemId") SkillComponentType = TypeVar("SkillComponentType", Handler, Behaviour, Model) @@ -47,8 +44,13 @@ class Registry(Generic[ItemId, Item], WithLogger, ABC): """This class implements an abstract registry.""" - def __init__(self): - """Initialize the registry.""" + def __init__(self, agent_name: str = "standalone"): + """ + Initialize the registry. + + :param agent_name: the name of the agent + """ + logger = get_logger(__name__, agent_name) super().__init__(logger) @abstractmethod @@ -142,17 +144,17 @@ def register( # pylint: disable=arguments-differ,unused-argument raise ValueError(f"Item already registered with item id '{public_id}'") self._public_id_to_item[public_id] = item - def unregister( + def unregister( # pylint: disable=arguments-differ self, public_id: PublicId - ) -> None: # pylint: disable=arguments-differ,unused-argument + ) -> None: """Unregister an item.""" if public_id not in self._public_id_to_item: raise ValueError(f"No item registered with item id '{public_id}'") self._public_id_to_item.pop(public_id) - def fetch( + def fetch( # pylint: disable=arguments-differ self, public_id: PublicId - ) -> Optional[Item]: # pylint: disable=arguments-differ,unused-argument + ) -> Optional[Item]: """ Fetch an item associated with a public id. @@ -189,13 +191,15 @@ def teardown(self) -> None: class AgentComponentRegistry(Registry[ComponentId, Component]): """This class implements a simple dictionary-based registry for agent components.""" - def __init__(self) -> None: + def __init__(self, **kwargs) -> None: """ Instantiate the registry. + :param kwargs: kwargs + :return: None """ - super().__init__() + super().__init__(**kwargs) self._components_by_type: Dict[ComponentType, Dict[PublicId, Component]] = {} self._registered_keys: Set[ComponentId] = set() @@ -327,13 +331,15 @@ class ComponentRegistry( ): """This class implements a generic registry for skill components.""" - def __init__(self) -> None: + def __init__(self, **kwargs) -> None: """ Instantiate the registry. + :param kwargs: kwargs + :return: None """ - super().__init__() + super().__init__(**kwargs) self._items: PublicIdRegistry[ Dict[str, SkillComponentType] ] = PublicIdRegistry() @@ -504,13 +510,15 @@ def teardown(self) -> None: class HandlerRegistry(ComponentRegistry[Handler]): """This class implements the handlers registry.""" - def __init__(self) -> None: + def __init__(self, **kwargs) -> None: """ Instantiate the registry. + :param kwargs: kwargs + :return: None """ - super().__init__() + super().__init__(**kwargs) # nested public id registries; one for protocol ids, one for skill ids self._items_by_protocol_and_skill = PublicIdRegistry[ PublicIdRegistry[Handler] diff --git a/aea/registries/filter.py b/aea/registries/filter.py index 38c434b953..8add2fc25d 100644 --- a/aea/registries/filter.py +++ b/aea/registries/filter.py @@ -18,20 +18,17 @@ # ------------------------------------------------------------------------------ """This module contains registries.""" -import logging from typing import List, Optional from aea.configurations.base import PublicId, SkillId from aea.helpers.async_friendly_queue import AsyncFriendlyQueue +from aea.helpers.logging import WithLogger, get_logger from aea.protocols.base import Message from aea.registries.resources import Resources from aea.skills.base import Behaviour, Handler -logger = logging.getLogger(__name__) - - -class Filter: +class Filter(WithLogger): """This class implements the filter of an AEA.""" def __init__( @@ -43,6 +40,8 @@ def __init__( :param resources: the resources :param decision_maker_out_queue: the decision maker queue """ + logger = get_logger(__name__, resources.agent_name) + WithLogger.__init__(self, logger=logger) self._resources = resources self._decision_maker_out_queue = decision_maker_out_queue @@ -106,7 +105,7 @@ async def get_internal_message(self) -> Optional[Message]: def handle_internal_message(self, internal_message: Optional[Message]) -> None: """Handlle internal message.""" if internal_message is None: - logger.warning("Got 'None' while processing internal messages.") + self.logger.warning("Got 'None' while processing internal messages.") return self._handle_internal_message(internal_message) @@ -122,7 +121,7 @@ def _handle_new_behaviours(self) -> None: is_dynamically_added=True, ) except ValueError as e: - logger.warning( + self.logger.warning( "Error when trying to add a new behaviour: {}".format(str(e)) ) @@ -138,7 +137,7 @@ def _handle_new_handlers(self) -> None: is_dynamically_added=True, ) except ValueError as e: - logger.warning( + self.logger.warning( "Error when trying to add a new handler: {}".format(str(e)) ) @@ -147,17 +146,19 @@ def _handle_internal_message(self, message: Message): try: skill_id = PublicId.from_str(message.to) except ValueError: - logger.warning("Invalid public id as destination={}".format(message.to)) + self.logger.warning( + "Invalid public id as destination={}".format(message.to) + ) return handler = self.resources.handler_registry.fetch_by_protocol_and_skill( message.protocol_id, skill_id, ) if handler is not None: - logger.debug( + self.logger.debug( "Calling handler {} of skill {}".format(type(handler), skill_id) ) handler.handle(message) else: - logger.warning( + self.logger.warning( "No internal handler fetched for skill_id={}".format(skill_id) ) diff --git a/aea/registries/resources.py b/aea/registries/resources.py index d136a7678c..813a8d3336 100644 --- a/aea/registries/resources.py +++ b/aea/registries/resources.py @@ -45,16 +45,17 @@ class Resources: """This class implements the object that holds the resources of an AEA.""" - def __init__(self) -> None: + def __init__(self, agent_name: str = "standalone") -> None: """ Instantiate the resources. :return None """ - self._component_registry = AgentComponentRegistry() - self._handler_registry = HandlerRegistry() - self._behaviour_registry = ComponentRegistry[Behaviour]() - self._model_registry = ComponentRegistry[Model]() + self._agent_name = agent_name + self._component_registry = AgentComponentRegistry(agent_name=agent_name) + self._handler_registry = HandlerRegistry(agent_name=agent_name) + self._behaviour_registry = ComponentRegistry[Behaviour](agent_name=agent_name) + self._model_registry = ComponentRegistry[Model](agent_name=agent_name) self._registries = [ self._component_registry, @@ -63,6 +64,11 @@ def __init__(self) -> None: self._model_registry, ] # type: List[Registry] + @property + def agent_name(self) -> str: + """Get the agent name.""" + return self._agent_name + @property def component_registry(self) -> AgentComponentRegistry: """Get the agent component registry.""" diff --git a/aea/runner.py b/aea/runner.py index 4b00f4e0a4..a39ec281af 100644 --- a/aea/runner.py +++ b/aea/runner.py @@ -34,7 +34,7 @@ from aea.runtime import AsyncRuntime -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) class AEAInstanceTask(AbstractExecutorTask): @@ -54,12 +54,12 @@ def start(self) -> None: try: self._agent.start() except BaseException: - logger.exception("Exceptions raised in runner task.") + _default_logger.exception("Exceptions raised in runner task.") raise def stop(self) -> None: """Stop task.""" - self._agent.stop() + self._agent.runtime.stop() def create_async_task(self, loop: AbstractEventLoop) -> TaskAwaitable: """ @@ -73,7 +73,7 @@ def create_async_task(self, loop: AbstractEventLoop) -> TaskAwaitable: raise ValueError( "Agent runtime is not async compatible. Please use runtime_mode=async" ) - return loop.create_task(self._agent.runtime.run_runtime()) + return loop.create_task(self._agent.runtime.start_and_wait_completed()) @property def id(self): diff --git a/aea/runtime.py b/aea/runtime.py index d8c81f139c..4fa437df39 100644 --- a/aea/runtime.py +++ b/aea/runtime.py @@ -16,28 +16,44 @@ # limitations under the License. # # ------------------------------------------------------------------------------ - - """This module contains the implementation of runtime for economic agent (AEA).""" import asyncio -import logging -from abc import ABC, abstractmethod from asyncio.events import AbstractEventLoop +from concurrent.futures._base import CancelledError from contextlib import suppress from enum import Enum from typing import Dict, Optional, Type, cast from aea.abstract_agent import AbstractAgent from aea.agent_loop import AsyncAgentLoop, AsyncState, BaseAgentLoop, SyncAgentLoop +from aea.connections.base import ConnectionStates from aea.decision_maker.base import DecisionMaker, DecisionMakerHandler -from aea.helpers.async_utils import ensure_loop +from aea.helpers.async_utils import Runnable from aea.helpers.exception_policy import ExceptionPolicyEnum -from aea.multiplexer import AsyncMultiplexer, Multiplexer +from aea.helpers.logging import WithLogger, get_logger +from aea.multiplexer import AsyncMultiplexer from aea.skills.tasks import TaskManager -logger = logging.getLogger(__name__) +class _StopRuntime(Exception): + """ + Exception to stop runtime. + + For internal usage only! + Used to perform asyncio call from sync callbacks. + """ + + def __init__(self, reraise: Optional[Exception] = None): + """ + Init _StopRuntime exception. + + :param reraise: exception to reraise. + + :return: None + """ + self.reraise = reraise + super().__init__("Stop runtime exception.") class RuntimeStates(Enum): @@ -50,7 +66,7 @@ class RuntimeStates(Enum): error = "error" -class BaseRuntime(ABC): +class BaseRuntime(Runnable, WithLogger): """Abstract runtime class to create implementations.""" RUN_LOOPS: Dict[str, Type[BaseAgentLoop]] = { @@ -64,6 +80,7 @@ def __init__( agent: AbstractAgent, loop_mode: Optional[str] = None, loop: Optional[AbstractEventLoop] = None, + threaded: bool = False, ) -> None: """ Init runtime. @@ -73,12 +90,14 @@ def __init__( :param loop: optional event loop. if not provided a new one will be created. :return: None """ + Runnable.__init__(self, threaded=threaded, loop=loop if not threaded else None) + logger = get_logger(__name__, agent.name) + WithLogger.__init__(self, logger=logger) self._agent: AbstractAgent = agent - self._loop: AbstractEventLoop = ensure_loop(loop) self._state: AsyncState = AsyncState(RuntimeStates.stopped, RuntimeStates) self._state.add_callback(self._log_runtime_state) - self._multiplexer: Multiplexer = self._get_multiplexer_instance() + self._multiplexer: AsyncMultiplexer = self._get_multiplexer_instance() self._task_manager = TaskManager() self._decision_maker: Optional[DecisionMaker] = None @@ -102,22 +121,25 @@ def task_manager(self) -> TaskManager: return self._task_manager @property - def loop(self) -> AbstractEventLoop: + def loop(self) -> Optional[AbstractEventLoop]: """Get event loop.""" return self._loop @property - def multiplexer(self) -> Multiplexer: + def multiplexer(self) -> AsyncMultiplexer: """Get multiplexer.""" return self._multiplexer - def _get_multiplexer_instance(self) -> Multiplexer: + def _get_multiplexer_instance(self) -> AsyncMultiplexer: """Create multiplexer instance.""" exception_policy = getattr( self._agent, "_connection_exception_policy", ExceptionPolicyEnum.propagate ) - return Multiplexer( - self._agent.connections, loop=self.loop, exception_policy=exception_policy + return AsyncMultiplexer( + self._agent.connections, + loop=self.loop, + exception_policy=exception_policy, + agent_name=self._agent.name, ) def _get_main_loop_class(self, loop_mode: str) -> Type[BaseAgentLoop]: @@ -134,6 +156,9 @@ def _get_main_loop_class(self, loop_mode: str) -> Type[BaseAgentLoop]: ) return self.RUN_LOOPS[loop_mode] + def _set_task(self): + self._task = self._loop.create_task(self._run_wrapper()) + @property def decision_maker(self) -> DecisionMaker: """Return decision maker if set.""" @@ -160,49 +185,16 @@ def _get_main_loop_instance(self, loop_mode: str) -> BaseAgentLoop: def _log_runtime_state(self, state) -> None: """Log a runtime state changed.""" - logger.debug(f"[{self._agent.name}]: Runtime state changed to {state}.") - - def start(self) -> None: - """Start agent using runtime.""" - if self._state.get() is not RuntimeStates.stopped: - logger.error( - "[{}]: Runtime is not stopped. Please stop it and start after.".format( - self._agent.name - ) - ) - return - self._start() - - def stop(self) -> None: - """Stop agent and runtime.""" - if self._state.get() in (RuntimeStates.stopped, RuntimeStates.stopping): - logger.error( - "[{}]: Runtime is already stopped or stopping.".format(self._agent.name) - ) - return - - logger.debug("[{}]: Runtime stopping...".format(self._agent.name)) - self._teardown() - self._stop() + self.logger.debug(f"[{self._agent.name}]: Runtime state changed to {state}.") def _teardown(self) -> None: """Tear down runtime.""" - logger.debug("[{}]: Runtime teardown...".format(self._agent.name)) + self.logger.debug("[{}]: Runtime teardown...".format(self._agent.name)) if self._decision_maker is not None: # pragma: nocover self.decision_maker.stop() self.task_manager.stop() self._agent.teardown() - logger.debug("[{}]: Runtime teardown completed".format(self._agent.name)) - - @abstractmethod - def _start(self) -> None: # pragma: nocover - """Implement runtime start function here.""" - raise NotImplementedError - - @abstractmethod - def _stop(self) -> None: # pragma: nocover - """Implement runtime stop function here.""" - raise NotImplementedError + self.logger.debug("[{}]: Runtime teardown completed".format(self._agent.name)) @property def is_running(self) -> bool: @@ -241,6 +233,7 @@ def __init__( agent: AbstractAgent, loop_mode: Optional[str] = None, loop: Optional[AbstractEventLoop] = None, + threaded=False, ) -> None: """ Init runtime. @@ -250,9 +243,7 @@ def __init__( :param loop: optional event loop. if not provided a new one will be created. :return: None """ - super().__init__(agent=agent, loop_mode=loop_mode, loop=loop) - self._stopping_task: Optional[asyncio.Task] = None - self._async_stop_lock: Optional[asyncio.Lock] = None + super().__init__(agent=agent, loop_mode=loop_mode, loop=loop, threaded=threaded) self._task: Optional[asyncio.Task] = None def set_loop(self, loop: AbstractEventLoop) -> None: @@ -261,165 +252,87 @@ def set_loop(self, loop: AbstractEventLoop) -> None: :param loop: event loop to use. """ - super().set_loop(loop) - self.multiplexer.set_loop(self.loop) - self.main_loop.set_loop(self.loop) - self._async_stop_lock = asyncio.Lock() + BaseRuntime.set_loop(self, loop) - def _start(self) -> None: + async def run(self) -> None: """ - Start runtime synchronously. + Start runtime task. - Set event loops for multiplexer and agent run loop. + Starts multiplexer and agent loop. + """ + terminal_state = RuntimeStates.error + try: + await self.run_runtime() + except _StopRuntime as e: + self._state.set(RuntimeStates.stopping) + terminal_state = RuntimeStates.stopped + if e.reraise: + raise e.reraise + except (asyncio.CancelledError, CancelledError, KeyboardInterrupt): + self._state.set(RuntimeStates.stopping) + terminal_state = RuntimeStates.stopped + finally: + await self.stop_runtime() + self._state.set(terminal_state) - Start runtime asynchonously in own event loop. + async def stop_runtime(self) -> None: """ - self.set_loop(self.loop) + Stop runtime coroutine. - logger.debug(f"Start runtime event loop {self.loop}: {id(self.loop)}") - self._task = self.loop.create_task(self.run_runtime()) + Stop main loop. + Tear down the agent.. + Disconnect multiplexer. + """ + self.main_loop.stop() + with suppress(_StopRuntime): + await self.main_loop.wait_completed() + self._teardown() - try: - self.loop.run_until_complete(self._task) - logger.debug("Runtime loop stopped!") - except Exception: - logger.exception("Exception raised during runtime processing") - self._state.set(RuntimeStates.error) - raise - finally: - self._stopping_task = None + self.multiplexer.stop() + await self.multiplexer.wait_completed() + self.logger.debug("Runtime loop stopped!") async def run_runtime(self) -> None: """Run agent and starts multiplexer.""" self._state.set(RuntimeStates.starting) - try: - await self._start_multiplexer() - await self._start_agent_loop() - except Exception: - logger.exception("AsyncRuntime exception during run:") - raise - finally: - if self._stopping_task and not self._stopping_task.done(): - await self._stopping_task - - async def _multiplexer_disconnect(self) -> None: - """Call multiplexer disconnect asynchronous way.""" - await AsyncMultiplexer.disconnect(self.multiplexer) + await asyncio.gather(self._start_multiplexer(), self._start_agent_loop()) async def _start_multiplexer(self) -> None: """Call multiplexer connect asynchronous way.""" + if not self._loop: # pragma: nocover + raise ValueError("no loop is set for runtime.") + self.setup_multiplexer() - await AsyncMultiplexer.connect(self.multiplexer) + + self.multiplexer.set_loop(self._loop) + self.multiplexer.start() + await self.multiplexer.wait_completed() async def _start_agent_loop(self) -> None: """Start agent main loop asynchronous way.""" - logger.debug("[{}]: Runtime started".format(self._agent.name)) + self.logger.debug("[{}]: Runtime started".format(self._agent.name)) + + await self.multiplexer.connection_status.wait(ConnectionStates.connected) + self.task_manager.start() if self._decision_maker is not None: # pragma: nocover self.decision_maker.start() - logger.debug("[{}]: Calling setup method...".format(self._agent.name)) + self.logger.debug("[{}]: Calling setup method...".format(self._agent.name)) self._agent.setup() + self.logger.debug("[{}]: Run main loop...".format(self._agent.name)) + self.main_loop.start() self._state.set(RuntimeStates.running) - logger.debug("[{}]: Run main loop...".format(self._agent.name)) - await self.main_loop.run_loop() - - async def _stop_runtime(self) -> None: - """ - Stop runtime. - - Disconnect multiplexer. - Tear down agent. - Stop agent main loop. - """ try: - if self._async_stop_lock is None: # pragma: nocover - return # even not started - - async with self._async_stop_lock: - - if self._state.get() in ( - RuntimeStates.stopped, - RuntimeStates.stopping, - ): # pragma: nocover - return - - self._state.set(RuntimeStates.stopping) - self.main_loop.stop() - - with suppress(BaseException): - await self.main_loop.wait_run_loop_stopped() - - self._teardown() - - await self._multiplexer_disconnect() - - except BaseException: # pragma: nocover - logger.exception("Runtime exception during stop:") + await self.main_loop.wait_completed() + except asyncio.CancelledError: + self.main_loop.stop() + await self.main_loop.wait_completed() raise - finally: - self._state.set(RuntimeStates.stopped) - logger.debug("[{}]: Runtime stopped".format(self._agent.name)) - - def _stop(self) -> None: - """ - Stop synchronously. - - This one calls async functions and does not guarantee to wait till runtime stopped. - """ - logger.debug("Stop runtime coroutine.") - if not self.loop.is_running(): # pragma: nocover - logger.debug( - "Runtime event loop is not running, start loop with `stop` coroutine" - ) - - with suppress(BaseException): - self.loop.run_until_complete(asyncio.sleep(0.01)) - - self.loop.run_until_complete(self._stop_runtime()) - return - def set_task(): - self._stopping_task = self.loop.create_task(self._stop_runtime()) - self.loop.call_soon_threadsafe(set_task) - - -class ThreadedRuntime(BaseRuntime): +class ThreadedRuntime(AsyncRuntime): """Run agent and multiplexer in different threads with own asyncio loops.""" - def _start(self) -> None: - """Implement runtime start function here.""" - self._state.set(RuntimeStates.starting) - - self.multiplexer.set_loop(asyncio.new_event_loop()) - - self.setup_multiplexer() - self.multiplexer.connect() - self._agent.setup() - self._start_agent_loop() - - def _start_agent_loop(self) -> None: - """Start aget's main loop.""" - logger.debug("[{}]: Runtime started".format(self._agent.name)) - self.task_manager.start() - if self._decision_maker is not None: # pragma: nocover - self.decision_maker.start() - try: - self._state.set(RuntimeStates.running) - self.main_loop.start() - logger.debug("[{}]: Runtime stopped".format(self._agent.name)) - except KeyboardInterrupt: # pragma: nocover - raise - except BaseException: # pragma: nocover - logger.exception("Runtime exception during stop:") - self._state.set(RuntimeStates.error) - raise - - def _stop(self) -> None: - """Implement runtime stop function here.""" - self._state.set(RuntimeStates.stopping) - self.main_loop.stop() - self._teardown() - self.multiplexer.disconnect() - logger.debug("[{}]: Runtime stopped".format(self._agent.name)) - self._state.set(RuntimeStates.stopped) + def _get_multiplexer_instance(self) -> AsyncMultiplexer: + """Create multiplexer instance.""" + return AsyncMultiplexer(self._agent.connections, threaded=True) diff --git a/aea/skills/base.py b/aea/skills/base.py index 25b1756a0c..7c97f7c731 100644 --- a/aea/skills/base.py +++ b/aea/skills/base.py @@ -43,7 +43,7 @@ from aea.configurations.loader import load_component_configuration from aea.context.base import AgentContext from aea.exceptions import AEAException, enforce -from aea.helpers.base import load_module +from aea.helpers.base import _get_aea_logger_name_prefix, load_module from aea.helpers.logging import AgentLoggerAdapter from aea.multiplexer import MultiplexerStatus, OutBox from aea.protocols.base import Message @@ -749,6 +749,7 @@ def from_config( skill_context = SkillContext() skill_context.set_agent_context(agent_context) logger_name = f"aea.packages.{configuration.author}.skills.{configuration.name}" + logger_name = _get_aea_logger_name_prefix(logger_name, agent_context.agent_name) _logger = AgentLoggerAdapter( logging.getLogger(logger_name), agent_context.agent_name ) diff --git a/aea/skills/error/skill.yaml b/aea/skills/error/skill.yaml index 66d180ffd2..92474217db 100644 --- a/aea/skills/error/skill.yaml +++ b/aea/skills/error/skill.yaml @@ -1,6 +1,6 @@ name: error author: fetchai -version: 0.5.0 +version: 0.7.0 type: skill description: The error skill implements basic error handling required by all AEAs. license: Apache-2.0 @@ -11,7 +11,7 @@ fingerprint: fingerprint_ignore_patterns: [] contracts: [] protocols: -- fetchai/default:0.5.0 +- fetchai/default:0.7.0 skills: [] behaviours: {} handlers: @@ -20,3 +20,4 @@ handlers: class_name: ErrorHandler models: {} dependencies: {} +is_abstract: false diff --git a/aea/skills/scaffold/skill.yaml b/aea/skills/scaffold/skill.yaml index bdda9507e7..6fcdeb71ad 100644 --- a/aea/skills/scaffold/skill.yaml +++ b/aea/skills/scaffold/skill.yaml @@ -30,3 +30,4 @@ models: foo: bar class_name: MyModel dependencies: {} +is_abstract: false diff --git a/aea/test_tools/generic.py b/aea/test_tools/generic.py index 74743bdd15..126da70a68 100644 --- a/aea/test_tools/generic.py +++ b/aea/test_tools/generic.py @@ -18,16 +18,25 @@ # ------------------------------------------------------------------------------ """This module contains generic tools for AEA end-to-end testing.""" +from collections import OrderedDict from pathlib import Path -from typing import Any, Dict, List - -import yaml +from typing import Any, Dict, List, cast from aea.cli.utils.config import handle_dotted_path -from aea.configurations.base import PublicId +from aea.configurations.base import ( + CRUDCollection, + ComponentConfiguration, + PackageConfiguration, + PackageType, + PublicId, + SkillConfig, + dependencies_from_json, +) from aea.connections.stub.connection import write_envelope from aea.exceptions import enforce +from aea.helpers.yaml_utils import yaml_dump, yaml_dump_all from aea.mail.base import Envelope +from aea.test_tools.constants import DEFAULT_AUTHOR def write_envelope_to_file(envelope: Envelope, file_path: str) -> None: @@ -66,24 +75,95 @@ def read_envelope_from_file(file_path: str): return Envelope(to=to, sender=sender, protocol_id=protocol_id, message=message,) -def _nested_set(dic: Dict, keys: List, value: Any) -> None: +def _nested_set( + configuration_obj: PackageConfiguration, keys: List, value: Any +) -> None: """ - Nested set a value to a dict. + Nested set a value to a dict. Force sets the values, overwriting any present values, but maintaining schema validation. - :param dic: target dict + :param configuration_obj: configuration object :param keys: list of keys. :param value: a value to set. :return: None. """ - for key in keys[:-1]: - dic = dic.setdefault(key, {}) - dic[keys[-1]] = value - -def force_set_config(dotted_path: str, value: Any) -> None: + def get_nested_ordered_dict_from_dict(input_dict: Dict) -> Dict: + _dic = {} + for _key, _value in input_dict.items(): + if isinstance(_value, dict): + _dic[_key] = OrderedDict(get_nested_ordered_dict_from_dict(_value)) + else: + _dic[_key] = _value + return _dic + + def get_nested_ordered_dict_from_keys_and_value( + keys: List[str], value: Any + ) -> Dict: + _dic = ( + OrderedDict(get_nested_ordered_dict_from_dict(value)) + if isinstance(value, dict) + else value + ) + for key in keys[::-1]: + _dic = OrderedDict({key: _dic}) + return _dic + + root_key = keys[0] + if ( + isinstance(configuration_obj, SkillConfig) + and root_key in SkillConfig.FIELDS_WITH_NESTED_FIELDS + ): + root_attr = getattr(configuration_obj, root_key) + length = len(keys) + if length < 3 or keys[2] not in SkillConfig.NESTED_FIELDS_ALLOWED_TO_UPDATE: + raise ValueError(f"Invalid keys={keys}.") # pragma: nocover + skill_component_id = keys[1] + skill_component_config = root_attr.read(skill_component_id) + if length == 3 and isinstance(value, dict): # root.skill_component_id.args + # set all args + skill_component_config.args = get_nested_ordered_dict_from_dict(value) + elif len(keys) >= 4: # root.skill_component_id.args.[keys] + # update some args + dic = get_nested_ordered_dict_from_keys_and_value(keys[3:], value) + skill_component_config.args.update(dic) + else: + raise ValueError( # pragma: nocover + f"Invalid keys={keys} and values={value}." + ) + root_attr.update(skill_component_id, skill_component_config) + else: + root_attr = getattr(configuration_obj, root_key) + if isinstance(root_attr, CRUDCollection): + if isinstance(value, dict) and len(keys) == 1: # root. + for _key, _value in value.items(): + dic = get_nested_ordered_dict_from_keys_and_value([_key], _value) + root_attr.update(_key, dic[_key]) + elif len(keys) >= 2: # root.[keys] + dic = get_nested_ordered_dict_from_keys_and_value(keys[1:], value) + root_attr.update(keys[1], dic[keys[1]]) + else: + raise ValueError( # pragma: nocover + f"Invalid keys={keys} and values={value}." + ) + elif root_key == "dependencies": + enforce( + isinstance(configuration_obj, ComponentConfiguration), + "Cannot only set dependencies to ComponentConfiguration instances.", + ) + configuration_obj = cast(ComponentConfiguration, configuration_obj) + new_pypi_dependencies = dependencies_from_json(value) + configuration_obj.pypi_dependencies = new_pypi_dependencies + else: + dic = get_nested_ordered_dict_from_keys_and_value(keys, value) + setattr(configuration_obj, root_key, dic[root_key]) + + +def nested_set_config( + dotted_path: str, value: Any, author: str = DEFAULT_AUTHOR +) -> None: """ - Set an AEA config without validation. + Set an AEA config with nested values. Run from agent's directory. @@ -97,16 +177,24 @@ def force_set_config(dotted_path: str, value: Any) -> None: :param dotted_path: dotted path to a setting. :param value: a value to assign. Must be of yaml serializable type. + :param author: the author name, used to parse the dotted path. :return: None. """ - settings_keys, file_path, _ = handle_dotted_path(dotted_path) - - settings = {} - with open(file_path, "r") as f: - settings = yaml.safe_load(f) - - _nested_set(settings, settings_keys, value) - - with open(file_path, "w") as f: - yaml.dump(settings, f, default_flow_style=False) + settings_keys, config_file_path, config_loader, _ = handle_dotted_path( + dotted_path, author + ) + + with config_file_path.open() as fp: + config = config_loader.load(fp) + + _nested_set(config, settings_keys, value) + + if config.package_type == PackageType.AGENT: + json_data = config.ordered_json + component_configurations = json_data.pop("component_configurations") + yaml_dump_all( + [json_data] + component_configurations, config_file_path.open("w") + ) + else: + yaml_dump(config.ordered_json, config_file_path.open("w")) diff --git a/aea/test_tools/test_cases.py b/aea/test_tools/test_cases.py index 55e1b9d2bc..8d4a6a0a3e 100644 --- a/aea/test_tools/test_cases.py +++ b/aea/test_tools/test_cases.py @@ -53,7 +53,7 @@ from aea.test_tools.constants import DEFAULT_AUTHOR from aea.test_tools.exceptions import AEATestingException from aea.test_tools.generic import ( - force_set_config, + nested_set_config, read_envelope_from_file, write_envelope_to_file, ) @@ -61,7 +61,7 @@ from tests.conftest import ROOT_DIR -logger = logging.getLogger(__name__) +_default_logger = logging.getLogger(__name__) CLI_LOG_OPTION = ["-v", "OFF"] @@ -125,10 +125,10 @@ def set_config(cls, dotted_path: str, value: Any, type_: str = "str") -> Result: ) @classmethod - def force_set_config(cls, dotted_path: str, value: Any) -> None: + def nested_set_config(cls, dotted_path: str, value: Any) -> None: """Force set config.""" with cd(cls._get_cwd()): - force_set_config(dotted_path, value) + nested_set_config(dotted_path, value) @classmethod def disable_aea_logging(cls) -> None: @@ -227,29 +227,44 @@ def start_thread(cls, target: Callable, **kwargs) -> Thread: return thread @classmethod - def create_agents(cls, *agents_names: str) -> None: + def create_agents( + cls, *agents_names: str, is_local: bool = True, is_empty: bool = False + ) -> None: """ Create agents in current working directory. :param agents_names: str agent names. + :param is_local: a flag for local folder add True by default. + :param empty: optional boolean flag for skip adding default dependencies. :return: None """ + cli_args = ["create", "--local", "--empty"] + if not is_local: # pragma: nocover + cli_args.remove("--local") + if not is_empty: # pragma: nocover + cli_args.remove("--empty") for name in set(agents_names): - cls.run_cli_command("create", "--local", name, "--author", cls.author) + cls.run_cli_command(*cli_args, name) cls.agents.add(name) @classmethod - def fetch_agent(cls, public_id: str, agent_name: str) -> None: + def fetch_agent( + cls, public_id: str, agent_name: str, is_local: bool = True + ) -> None: """ Create agents in current working directory. :param public_id: str public id :param agents_name: str agent name. + :param is_local: a flag for local folder add True by default. :return: None """ - cls.run_cli_command("fetch", "--local", public_id, "--alias", agent_name) + cli_args = ["fetch", "--local"] + if not is_local: # pragma: nocover + cli_args.remove("--local") + cls.run_cli_command(*cli_args, public_id, "--alias", agent_name) cls.agents.add(agent_name) @classmethod @@ -269,11 +284,11 @@ def is_allowed_diff_in_agent_config( with open( os.path.join(path_to_fetched_aea, "aea-config.yaml"), "r" ) as file: - content1 = yaml.full_load(file) + content1 = list(yaml.safe_load_all(file))[0] # only load first page with open( os.path.join(path_to_manually_created_aea, "aea-config.yaml"), "r" ) as file: - content2 = yaml.full_load(file) + content2 = list(yaml.safe_load_all(file))[0] content1c = copy.deepcopy(content1) for key, value in content1c.items(): if content2[key] == value: @@ -728,14 +743,14 @@ def missing_from_output( if is_terminating: cls.terminate_agents(process) if missing_strings != []: - logger.info( + _default_logger.info( "Non-empty missing strings, stderr:\n{}".format(cls.stderr[process.pid]) ) - logger.info("=====================") - logger.info( + _default_logger.info("=====================") + _default_logger.info( "Non-empty missing strings, stdout:\n{}".format(cls.stdout[process.pid]) ) - logger.info("=====================") + _default_logger.info("=====================") return missing_strings @classmethod @@ -798,7 +813,7 @@ def teardown_class(cls): @pytest.mark.integration -class UseOef: +class UseOef: # pylint: disable=too-few-public-methods """Inherit from this class to launch an OEF node.""" @pytest.fixture(autouse=True) @@ -813,12 +828,15 @@ class AEATestCaseEmpty(BaseAEATestCase): This test case will create a default AEA project. """ + IS_LOCAL = True + IS_EMPTY = False + @classmethod def setup_class(cls): """Set up the test class.""" super(AEATestCaseEmpty, cls).setup_class() cls.agent_name = "agent-" + "".join(random.choices(string.ascii_lowercase, k=5)) - cls.create_agents(cls.agent_name) + cls.create_agents(cls.agent_name, is_local=cls.IS_LOCAL, is_empty=cls.IS_EMPTY) cls.set_agent_context(cls.agent_name) diff --git a/aea/test_tools/test_skill.py b/aea/test_tools/test_skill.py new file mode 100644 index 0000000000..883688d152 --- /dev/null +++ b/aea/test_tools/test_skill.py @@ -0,0 +1,432 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2019 Fetch.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 test case classes based on pytest for AEA skill testing.""" + +import asyncio +from pathlib import Path +from queue import Queue +from types import SimpleNamespace +from typing import Any, Dict, Optional, Tuple, Type, Union, cast + +from aea.context.base import AgentContext +from aea.exceptions import AEAEnforceError +from aea.identity.base import Identity +from aea.mail.base import Address +from aea.multiplexer import AsyncMultiplexer, Multiplexer, OutBox +from aea.protocols.base import Message +from aea.protocols.dialogue.base import Dialogue, DialogueMessage, Dialogues +from aea.skills.base import Skill +from aea.skills.tasks import TaskManager + + +COUNTERPARTY_NAME = "counterparty" + + +class BaseSkillTestCase: + """A class to test a skill.""" + + path_to_skill: Union[Path, str] = Path(".") + _skill: Skill + _multiplexer: AsyncMultiplexer + _outbox: OutBox + + @property + def skill(self) -> Skill: + """Get the skill.""" + try: + value = self._skill + except AttributeError: + raise ValueError("Ensure skill is set during setup_class.") + return value + + def get_quantity_in_outbox(self) -> int: + """Get the quantity of envelopes in the outbox.""" + return self._multiplexer.out_queue.qsize() + + def get_message_from_outbox(self) -> Optional[Message]: + """Get message from outbox.""" + if self._outbox.empty(): + return None + envelope = self._multiplexer.out_queue.get_nowait() + return envelope.message + + def get_quantity_in_decision_maker_inbox(self) -> int: + """Get the quantity of messages in the decision maker inbox.""" + return self._skill.skill_context.decision_maker_message_queue.qsize() + + def get_message_from_decision_maker_inbox(self) -> Optional[Message]: + """Get message from decision maker inbox.""" + if self._skill.skill_context.decision_maker_message_queue.empty(): + return None + return self._skill.skill_context.decision_maker_message_queue.get_nowait() + + def assert_quantity_in_outbox(self, expected_quantity) -> None: + """Assert the quantity of messages in the outbox.""" + quantity = self.get_quantity_in_outbox() + assert ( # nosec + quantity == expected_quantity + ), f"Invalid number of messages in outbox. Expected {expected_quantity}. Found {quantity}." + + def assert_quantity_in_decision_making_queue(self, expected_quantity) -> None: + """Assert the quantity of messages in the decision maker queue.""" + quantity = self.get_quantity_in_decision_maker_inbox() + assert ( # nosec + quantity == expected_quantity + ), f"Invalid number of messages in decision maker queue. Expected {expected_quantity}. Found {quantity}." + + @staticmethod + def message_has_attributes( + actual_message: Message, message_type: Type[Message], **kwargs, + ) -> Tuple[bool, str]: + """ + Evaluates whether a message's attributes match the expected attributes provided. + + :param actual_message: the actual message + :param message_type: the expected message type + :param kwargs: other expected message attributes + + :return: boolean result of the evaluation and accompanied message + """ + if ( + type(actual_message) # pylint: disable=unidiomatic-typecheck + != message_type + ): + return ( + False, + "The message types do not match. Actual type: {}. Expected type: {}".format( + type(actual_message), message_type + ), + ) + + for attribute_name, expected_value in kwargs.items(): + actual_value = getattr(actual_message, attribute_name) + if actual_value != expected_value: + return ( + False, + f"The '{attribute_name}' fields do not match. Actual '{attribute_name}': {actual_value}. Expected '{attribute_name}': {expected_value}", + ) + + return True, "The message has the provided expected attributes." + + def build_incoming_message( + self, + message_type: Type[Message], + performative: Message.Performative, + dialogue_reference: Optional[Tuple[str, str]] = None, + message_id: Optional[int] = None, + target: Optional[int] = None, + to: Optional[Address] = None, + sender: Address = COUNTERPARTY_NAME, + **kwargs, + ) -> Message: + """ + Quickly create an incoming message with the provided attributes. + + For any attribute not provided, the corresponding default value in message is used. + + :param message_type: the type of the message + :param dialogue_reference: the dialogue_reference + :param message_id: the message_id + :param target: the target + :param performative: the performative + :param to: the 'to' address + :param sender: the 'sender' address + :param kwargs: other attributes + + :return: the created incoming message + """ + message_attributes = dict() # type: Dict[str, Any] + + default_dialogue_reference = Dialogues.new_self_initiated_dialogue_reference() + dialogue_reference = ( + default_dialogue_reference + if dialogue_reference is None + else dialogue_reference + ) + message_attributes["dialogue_reference"] = dialogue_reference + if message_id is not None: + message_attributes["message_id"] = message_id + if target is not None: + message_attributes["target"] = target + message_attributes["performative"] = performative + message_attributes.update(kwargs) + + incoming_message = message_type(**message_attributes) + incoming_message.sender = sender + incoming_message.to = ( + self.skill.skill_context.agent_address if to is None else to + ) + + return incoming_message + + def build_incoming_message_for_skill_dialogue( + self, + dialogue: Dialogue, + performative: Message.Performative, + message_type: Optional[Type[Message]] = None, + dialogue_reference: Optional[Tuple[str, str]] = None, + message_id: Optional[int] = None, + target: Optional[int] = None, + to: Optional[Address] = None, + sender: Optional[Address] = None, + **kwargs, + ) -> Message: + """ + Quickly create an incoming message with the provided attributes for a dialogue. + + For any attribute not provided, a value based on the dialogue is used. + These values are shown in parantheses in the list of parameters below. + + NOTE: This method must be used with care. The dialogue provided is part of the skill + which is being tested. Because for any unspecified attribute, a "correct" value is used, + the test will be, by design, insured to pass on these values. + + :param dialogue: the dialogue to which the incoming message is intended + :param performative: the performative of the message + :param message_type: (the message_class of the provided dialogue) the type of the message + :param dialogue_reference: (the dialogue_reference of the provided dialogue) the dialogue reference of the message + :param message_id: (the id of the last message in the provided dialogue + 1) the id of the message + :param target: (the id of the last message in the provided dialogue) the target of the message + :param to: (the agent address associated with this skill) the receiver of the message + :param sender: (the counterperty in the provided dialogue) the sender of the message + :param kwargs: other attributes + + :return: the created incoming message + """ + if dialogue is None: + raise AEAEnforceError("dialogue cannot be None.") + + if dialogue.last_message is None: + raise AEAEnforceError("dialogue cannot be empty.") + + message_type = ( + message_type if message_type is not None else dialogue.message_class + ) + dialogue_reference = ( + dialogue_reference + if dialogue_reference is not None + else dialogue.dialogue_label.dialogue_reference + ) + message_id = ( + message_id + if message_id is not None + else dialogue.last_message.message_id + 1 + ) + target = target if target is not None else dialogue.last_message.message_id + to = to if to is not None else dialogue.self_address + sender = ( + sender + if sender is not None + else dialogue.dialogue_label.dialogue_opponent_addr + ) + + incoming_message = self.build_incoming_message( + message_type=message_type, + performative=performative, + dialogue_reference=dialogue_reference, + message_id=message_id, + target=target, + to=to, + sender=sender, + **kwargs, + ) + + return incoming_message + + @staticmethod + def _provide_unspecified_fields( + message: DialogueMessage, last_is_incoming: Optional[bool], message_id: int + ) -> Tuple[bool, int]: + """ + Specifies values (an interpretation) for the unspecified fields of a DialogueMessage. + + For an unspecified is_incoming, the opposite of the last_is_incoming value is used. + For an unspecified target, the message_id of the previous message (message_id - 1) is used. + + :param message: the DialogueMessage + :param last_is_incoming: the is_incoming value of the previous DialogueMessage + :param message_id: the message_id of this DialogueMessage + + :return: the is_incoming and target values + """ + default_is_incoming = not last_is_incoming + is_incoming = default_is_incoming if message[2] is None else message[2] + + default_target = message_id - 1 + target = default_target if message[3] is None else message[3] + return is_incoming, target + + @staticmethod + def _non_initial_incoming_message_dialogue_reference( + dialogue: Dialogue, + ) -> Tuple[str, str]: + """ + Specifies the dialogue reference of a non-initial incoming message for a dialogue. + + It uses a complete version of the reference in the dialogue if it is incomplete, + otherwise it uses the reference in the dialogue. + + :param dialogue: the dialogue to which the incoming message is intended + :return: its dialogue reference + """ + dialogue_reference = ( + dialogue.dialogue_label.dialogue_reference[0], + Dialogues._generate_dialogue_nonce() # pylint: disable=protected-access + if dialogue.dialogue_label.dialogue_reference[1] + == Dialogue.UNASSIGNED_DIALOGUE_REFERENCE + else dialogue.dialogue_label.dialogue_reference[1], + ) + return dialogue_reference + + def _extract_message_fields( + self, message: DialogueMessage, index: int, last_is_incoming: bool, + ) -> Tuple[Message.Performative, Dict, int, bool, int]: + """ + Extracts message attributes from a dialogue message. + + :param message: the dialogue message + :param index: the index of this dialogue message in the sequence of messages + :param message: the is_incoming of the last message in the sequence + + :return: the performative, contents, message_id, is_incoming, target of the message + """ + performative = message[0] + contents = message[1] + message_id = index + 1 + is_incoming, target = self._provide_unspecified_fields( + message, last_is_incoming=last_is_incoming, message_id=message_id, + ) + return performative, contents, message_id, is_incoming, target + + def prepare_skill_dialogue( + self, + dialogues: Dialogues, + messages: Tuple[DialogueMessage, ...], + counterparty: Address = COUNTERPARTY_NAME, + ) -> Dialogue: + """ + Quickly create a dialogue. + + The 'messages' argument is a tuple of DialogueMessages. + For every DialogueMessage (performative, contents, is_incoming, target): + - if 'is_incoming' is not provided: for the first message it is assumed False (outgoing), + for any other message, it is the opposite of the one preceding it. + - if 'target' is not provided: for the first message it is assumed 0, + for any other message, it is the index of the message before it in the tuple of messages + 1. + + :param dialogues: a dialogues class + :param counterparty: the message_id + :param messages: the dialogue_reference + + :return: the created incoming message + """ + if len(messages) == 0: + raise AEAEnforceError("the list of messages must be positive.") + + ( + performative, + contents, + message_id, + is_incoming, + target, + ) = self._extract_message_fields(messages[0], index=0, last_is_incoming=True) + + if is_incoming: # first message from the opponent + dialogue_reference = dialogues.new_self_initiated_dialogue_reference() + message = self.build_incoming_message( + message_type=dialogues.message_class, + dialogue_reference=dialogue_reference, + message_id=message_id, + target=target, + performative=performative, + to=self.skill.skill_context.agent_address, + sender=counterparty, + **contents, + ) + dialogue = cast(Dialogue, dialogues.update(message)) + if dialogue is None: + raise AEAEnforceError( + "Cannot update the dialogue with message number {}".format( + message_id + ) + ) + else: # first message from self + _, dialogue = dialogues.create( + counterparty=counterparty, performative=performative, **contents + ) + + for idx, dialogue_message in enumerate(messages[1:]): + ( + performative, + contents, + message_id, + is_incoming, + target, + ) = self._extract_message_fields(dialogue_message, idx + 1, is_incoming) + if is_incoming: # messages from the opponent + dialogue_reference = self._non_initial_incoming_message_dialogue_reference( + dialogue + ) + message = self.build_incoming_message( + message_type=dialogues.message_class, + dialogue_reference=dialogue_reference, + message_id=message_id, + target=target, + performative=performative, + to=self.skill.skill_context.agent_address, + sender=counterparty, + **contents, + ) + dialogue = cast(Dialogue, dialogues.update(message)) + if dialogue is None: + raise AEAEnforceError( + "Cannot update the dialogue with message number {}".format( + message_id + ) + ) + else: # messages from self + dialogue.reply(performative=performative, target=target, **contents) + + return dialogue + + @classmethod + def setup(cls) -> None: + """Set up the skill test case.""" + identity = Identity("test_agent_name", "test_agent_address") + + cls._multiplexer = AsyncMultiplexer() + cls._multiplexer._out_queue = ( # pylint: disable=protected-access + asyncio.Queue() + ) + cls._outbox = OutBox(cast(Multiplexer, cls._multiplexer)) + + agent_context = AgentContext( + identity=identity, + connection_status=cls._multiplexer.connection_status, + outbox=cls._outbox, + decision_maker_message_queue=Queue(), + decision_maker_handler_context=SimpleNamespace(), + task_manager=TaskManager(), + default_connection=None, + default_routing={}, + search_service_address="dummy_search_service_address", + decision_maker_address="dummy_decision_maker_address", + ) + + cls._skill = Skill.from_dir(str(cls.path_to_skill), agent_context) diff --git a/benchmark/run_from_branch.sh b/benchmark/run_from_branch.sh index 0027e2644c..160350178a 100755 --- a/benchmark/run_from_branch.sh +++ b/benchmark/run_from_branch.sh @@ -12,7 +12,7 @@ pip install pipenv # this is to install benchmark dependencies pipenv install --dev --skip-lock # this is to install the AEA in the Pipenv virtual env -pipenv run pip install --upgrade aea[all]=="0.6.1" +pipenv run pip install --upgrade aea[all]=="0.6.3" chmod +x benchmark/checks/run_benchmark.sh echo "Start the experiments." diff --git a/deploy-image/docker-env.sh b/deploy-image/docker-env.sh index cc70ac7041..201386f939 100755 --- a/deploy-image/docker-env.sh +++ b/deploy-image/docker-env.sh @@ -1,7 +1,7 @@ #!/bin/bash # Swap the following lines if you want to work with 'latest' -DOCKER_IMAGE_TAG=aea-deploy:0.6.1 +DOCKER_IMAGE_TAG=aea-deploy:0.6.3 # DOCKER_IMAGE_TAG=aea-deploy:latest DOCKER_BUILD_CONTEXT_DIR=.. diff --git a/develop-image/docker-env.sh b/develop-image/docker-env.sh index 2b49119402..6e01045dd3 100755 --- a/develop-image/docker-env.sh +++ b/develop-image/docker-env.sh @@ -1,7 +1,7 @@ #!/bin/bash # Swap the following lines if you want to work with 'latest' -DOCKER_IMAGE_TAG=aea-develop:0.6.1 +DOCKER_IMAGE_TAG=aea-develop:0.6.3 # DOCKER_IMAGE_TAG=aea-develop:latest DOCKER_BUILD_CONTEXT_DIR=.. diff --git a/docs/acn.md b/docs/acn.md index ff5e4ec970..d903ccaa6f 100644 --- a/docs/acn.md +++ b/docs/acn.md @@ -1,7 +1,62 @@ +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 +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 guarantying certain properties? + +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: + +- 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 +- Support for resource-constrained devices + +The ACN solves the above problem whilst providing the above guarantees and satisfying the constraints. + +## Peers + +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 + +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 + +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 + +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

    -

    Details coming soon. In the meantime check out this section.

    +

    The `p2p_libp2p_mailbox` connection is not available yet. +

    +## Trust and security + +An agent can choose which connection to use depending on the resource and trust requirements: + +- `p2p_libp2p` connection: the agent maintains a peer of the ACN. The agent has full control over the peer and does not need to trust any other entity. +- `p2p_libp2p_client` connection: the agent maintains a client connection to a server which is operated by a peer of the ACN. The agent does need to trust the entity operating the peer. + +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/agent-vs-aea.md b/docs/agent-vs-aea.md index 5db0120132..ad1ad9fa3c 100644 --- a/docs/agent-vs-aea.md +++ b/docs/agent-vs-aea.md @@ -126,7 +126,8 @@ We run the agent from a different thread so that we can still use the main threa 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:0.5.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," + message_text = b"my_agent,other_agent,fetchai/default:0.7.0,\x12\r\x08\x01*\t*\x07\n\x05hello," + with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) @@ -251,7 +252,8 @@ def run(): 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:0.5.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," + message_text = b"my_agent,other_agent,fetchai/default:0.7.0,\x12\r\x08\x01*\t*\x07\n\x05hello," + with open(INPUT_FILE, "wb") as f: write_with_lock(f, message_text) diff --git a/docs/api/aea.md b/docs/api/aea.md index e8f662516e..8b96ff7ee8 100644 --- a/docs/api/aea.md +++ b/docs/api/aea.md @@ -7,7 +7,7 @@ This module contains the implementation of an autonomous economic agent (AEA). ## AEA Objects ```python -class AEA(Agent, WithLogger) +class AEA(Agent) ``` This class implements an autonomous economic agent. @@ -30,7 +30,7 @@ Instantiate the agent. - `resources`: the resources (protocols and skills) of the agent. - `loop`: the event loop to run the connections. - `period`: period to call agent's act -- `exeution_timeout`: amount of time to limit single act/handle to execute. +- `execution_timeout`: amount of time to limit single act/handle to execute. - `max_reactions`: the processing rate of envelopes per tick (i.e. single loop). - `decision_maker_handler_class`: the class implementing the decision maker handler to be used. - `skill_exception_policy`: the skill exception policy enum diff --git a/docs/api/aea_builder.md b/docs/api/aea_builder.md index bb39ff9170..00708c68a3 100644 --- a/docs/api/aea_builder.md +++ b/docs/api/aea_builder.md @@ -140,11 +140,20 @@ version field. the merged PyPI dependencies + +#### install`_`dependencies + +```python + | install_dependencies() -> None +``` + +Install extra dependencies for components. + ## AEABuilder Objects ```python -class AEABuilder() +class AEABuilder(WithLogger) ``` This class helps to build an AEA. @@ -711,6 +720,15 @@ Remove protocol. the AEABuilder + +#### install`_`pypi`_`dependencies + +```python + | install_pypi_dependencies() -> None +``` + +Install components extra dependecies. + #### build @@ -785,11 +803,41 @@ Construct the builder from an AEA project. an AEABuilder. - -#### make`_`logger + +#### from`_`config`_`json + +```python + | @classmethod + | from_config_json(cls, json_data: List[Dict], aea_project_path: PathLike, skip_consistency_check: bool = False) -> "AEABuilder" +``` + +Load agent configuration for alreaady provided json data. + +**Arguments**: + +- `json_data`: list of dicts with agent configuration +- `aea_project_path`: path to project root +- `skip_consistency_check`: skip consistency check on configs load. + +**Returns**: + +AEABuilder instance + + +#### get`_`configuration`_`file`_`path + +```python + | @staticmethod + | get_configuration_file_path(aea_project_path: Union[Path, str]) -> Path +``` + +Return path to aea-config file for the given aea project path. + + +#### make`_`component`_`logger ```python -make_logger(configuration: ComponentConfiguration, agent_name: str) -> Optional[logging.Logger] +make_component_logger(configuration: ComponentConfiguration, agent_name: str) -> Optional[logging.Logger] ``` Make the logger for a component. diff --git a/docs/api/agent.md b/docs/api/agent.md index a3a96b151d..c8af2cdc8b 100644 --- a/docs/api/agent.md +++ b/docs/api/agent.md @@ -7,7 +7,7 @@ This module contains the implementation of a generic agent. ## Agent Objects ```python -class Agent(AbstractAgent) +class Agent(AbstractAgent, WithLogger) ``` This class provides an abstract base class for a generic agent. @@ -16,7 +16,7 @@ This class provides an abstract base class for a generic agent. #### `__`init`__` ```python - | __init__(identity: Identity, connections: List[Connection], loop: Optional[AbstractEventLoop] = None, period: float = 1.0, loop_mode: Optional[str] = None, runtime_mode: Optional[str] = None) -> None + | __init__(identity: Identity, connections: List[Connection], loop: Optional[AbstractEventLoop] = None, period: float = 1.0, loop_mode: Optional[str] = None, runtime_mode: Optional[str] = None, logger: Logger = _default_logger) -> None ``` Instantiate the agent. diff --git a/docs/api/agent_loop.md b/docs/api/agent_loop.md index 9860d50b64..2afb2f1034 100644 --- a/docs/api/agent_loop.md +++ b/docs/api/agent_loop.md @@ -3,11 +3,29 @@ This module contains the implementation of an agent loop using asyncio. + +## AgentLoopException Objects + +```python +class AgentLoopException(AEAException) +``` + +Exception for agent loop runtime errors. + + +## AgentLoopStates Objects + +```python +class AgentLoopStates(Enum) +``` + +Internal agent loop states. + ## BaseAgentLoop Objects ```python -class BaseAgentLoop(WithLogger, ABC) +class BaseAgentLoop(Runnable, WithLogger, ABC) ``` Base abstract agent loop class. @@ -16,7 +34,7 @@ Base abstract agent loop class. #### `__`init`__` ```python - | __init__(agent: AbstractAgent, loop: Optional[AbstractEventLoop] = None) -> None + | __init__(agent: AbstractAgent, loop: Optional[AbstractEventLoop] = None, threaded=False) -> None ``` Init loop. @@ -43,59 +61,24 @@ Get agent. Set event loop and all event loopp related objects. - -#### start - -```python - | start() -> None -``` - -Start agent loop synchronously in own asyncio loop. - - -#### setup + +#### run ```python - | setup() -> None -``` - -Set up loop before started. - - -#### teardown - -```python - | teardown() -``` - -Tear down loop on stop. - - -#### run`_`loop - -```python - | async run_loop() -> None + | async run() -> None ``` Run agent loop. - -#### wait`_`run`_`loop`_`stopped - -```python - | async wait_run_loop_stopped() -> None -``` - -Wait all tasks stopped. - - -#### stop + +#### state ```python - | stop() -> None + | @property + | state() -> AgentLoopStates ``` -Stop agent loop. +Get current main loop state. #### is`_`running @@ -107,24 +90,6 @@ Stop agent loop. Get running state of the loop. - -## AgentLoopException Objects - -```python -class AgentLoopException(AEAException) -``` - -Exception for agent loop runtime errors. - - -## AgentLoopStates Objects - -```python -class AgentLoopStates(Enum) -``` - -Internal agent loop states. - ## AsyncAgentLoop Objects @@ -138,7 +103,7 @@ Asyncio based agent loop suitable only for AEA. #### `__`init`__` ```python - | __init__(agent: AbstractAgent, loop: AbstractEventLoop = None) + | __init__(agent: AbstractAgent, loop: AbstractEventLoop = None, threaded=False) ``` Init agent loop. diff --git a/docs/api/configurations/base.md b/docs/api/configurations/base.md index 6ebf8cafdf..18f6b46361 100644 --- a/docs/api/configurations/base.md +++ b/docs/api/configurations/base.md @@ -3,17 +3,157 @@ Classes to handle AEA configurations. + +## PyPIPackageName Objects + +```python +class PyPIPackageName(RegexConstrainedString) +``` + +A PyPI Package name. + + +## GitRef Objects + +```python +class GitRef(RegexConstrainedString) +``` + +A Git reference. + +It can be a branch name, a commit hash or a tag. + -#### Dependency +## Dependency Objects + +```python +class Dependency() +``` + +This class represents a PyPI dependency. + +It contains the following information: +- version: a version specifier(s) (e.g. '==0.1.0'). +- index: the PyPI index where to download the package from (default: https://pypi.org) +- git: the URL to the Git repository (e.g. https://github.com/fetchai/agents-aea.git) +- ref: either the branch name, the tag, the commit number or a Git reference (default: 'master'.) -A dependency is a dictionary with the following (optional) keys: - - version: a version specifier(s) (e.g. '==0.1.0'). - - index: the PyPI index where to download the package from (default: https://pypi.org) - - git: the URL to the Git repository (e.g. https://github.com/fetchai/agents-aea.git) - - ref: either the branch name, the tag, the commit number or a Git reference (default: 'master'.) If the 'git' field is set, the 'version' field will be ignored. These fields will be forwarded to the 'pip' command. + +#### `__`init`__` + +```python + | __init__(name: Union[PyPIPackageName, str], version: Union[str, SpecifierSet] = "", index: Optional[Union[str, Url]] = None, git: Optional[Union[str, Url]] = None, ref: Optional[Union[GitRef, str]] = None) +``` + +Initialize a PyPI dependency. + +**Arguments**: + +- `name`: the package name. +- `version`: the specifier set object +- `index`: the URL to the PyPI server. +- `git`: the URL to a git repository. +- `ref`: the Git reference (branch/commit/tag). + + +#### name + +```python + | @property + | name() -> str +``` + +Get the name. + + +#### version + +```python + | @property + | version() -> str +``` + +Get the version. + + +#### index + +```python + | @property + | index() -> Optional[str] +``` + +Get the index. + + +#### git + +```python + | @property + | git() -> Optional[str] +``` + +Get the git. + + +#### ref + +```python + | @property + | ref() -> Optional[str] +``` + +Get the ref. + + +#### from`_`json + +```python + | @classmethod + | from_json(cls, obj: Dict[str, Dict[str, str]]) -> "Dependency" +``` + +Parse a dependency object from a dictionary. + + +#### to`_`json + +```python + | to_json() -> Dict[str, Dict[str, str]] +``` + +Transform the object to JSON. + + +#### get`_`pip`_`install`_`args + +```python + | get_pip_install_args() -> List[str] +``` + +Get 'pip install' arguments. + + +#### `__`str`__` + +```python + | __str__() -> str +``` + +Get the string representation. + + +#### `__`eq`__` + +```python + | __eq__(other) +``` + +Compare with another object. + #### Dependencies @@ -23,6 +163,101 @@ The package name must satisfy +#### dependencies`_`from`_`json + +```python +dependencies_from_json(obj: Dict[str, Dict]) -> Dependencies +``` + +Parse a JSON object to get an instance of Dependencies. + +**Arguments**: + +- `obj`: a dictionary whose keys are package names and values are dictionary with package specifications. + +**Returns**: + +a Dependencies object. + + +#### dependencies`_`to`_`json + +```python +dependencies_to_json(dependencies: Dependencies) -> Dict[str, Dict] +``` + +Transform a Dependencies object into a JSON object. + +**Arguments**: + +- `dependencies`: an instance of "Dependencies" type. + +**Returns**: + +a dictionary whose keys are package names and +values are the JSON version of a Dependency object. + + +## PackageVersion Objects + +```python +@functools.total_ordering +class PackageVersion() +``` + +A package version. + + +#### `__`init`__` + +```python + | __init__(version_like: PackageVersionLike) +``` + +Initialize a package version. + +**Arguments**: + +- `version_like`: a string, os a semver.VersionInfo object. + + +#### is`_`latest + +```python + | @property + | is_latest() -> bool +``` + +Check whether the version is 'latest'. + + +#### `__`str`__` + +```python + | __str__() -> str +``` + +Get the string representation. + + +#### `__`eq`__` + +```python + | __eq__(other) -> bool +``` + +Check equality. + + +#### `__`lt`__` + +```python + | __lt__(other) +``` + +Compare with another object. + ## PackageType Objects @@ -88,6 +323,19 @@ Enum of component types supported. Get package type for component type. + +#### plurals + +```python + | @staticmethod + | plurals() -> Collection[str] +``` + +Get the collection of type names, plural. + +>>> ComponentType.plurals() +['protocols', 'connections', 'skills', 'contracts'] + #### to`_`plural @@ -324,12 +572,17 @@ The concatenation of those three elements gives the public identifier: >>> another_public_id = PublicId("author", "my_package", "0.1.0") >>> assert hash(public_id) == hash(another_public_id) >>> assert public_id == another_public_id +>>> latest_public_id = PublicId("author", "my_package", "latest") +>>> latest_public_id + +>>> latest_public_id.package_version.is_latest +True #### `__`init`__` ```python - | __init__(author: str, name: str, version: PackageVersionLike) + | __init__(author: str, name: str, version: Optional[PackageVersionLike] = None) ``` Initialize the public identifier. @@ -362,17 +615,17 @@ Get the name. | version() -> str ``` -Get the version. +Get the version string. - -#### version`_`info + +#### package`_`version ```python | @property - | version_info() -> PackageVersion + | package_version() -> PackageVersion ``` -Get the package version. +Get the package version object. #### latest @@ -384,6 +637,42 @@ Get the package version. Get the public id in `latest` form. + +#### same`_`prefix + +```python + | same_prefix(other: "PublicId") -> bool +``` + +Check if the other public id has the same author and name of this. + + +#### to`_`latest + +```python + | to_latest() -> "PublicId" +``` + +Return the same public id, but with latest version. + + +#### is`_`valid`_`str + +```python + | @classmethod + | is_valid_str(cls, public_id_string: str) -> bool +``` + +Check if a string is a public id. + +**Arguments**: + +- `public_id_string`: the public id in string format. + +**Returns**: + +bool indicating validity + #### from`_`str @@ -684,6 +973,15 @@ Get the hash. Get the string representation. + +#### `__`repr`__` + +```python + | __repr__() +``` + +Get the object representation in string. + #### `__`eq`__` @@ -765,6 +1063,16 @@ Get the component identifier without the version. Get the prefix import path for this component. + +#### json + +```python + | @property + | json() -> Dict +``` + +Get the JSON representation. + ## PackageConfiguration Objects @@ -853,6 +1161,23 @@ Get the public id. Get the package dependencies. + +#### update + +```python + | update(data: Dict) -> None +``` + +Update configuration with other data. + +**Arguments**: + +- `data`: the data to replace. + +**Returns**: + +None + ## ComponentConfiguration Objects @@ -871,16 +1196,6 @@ Class to represent an agent component configuration. Set component configuration. - -#### pypi`_`dependencies - -```python - | @property - | pypi_dependencies() -> Dependencies -``` - -Get PyPI dependencies. - #### component`_`type @@ -945,23 +1260,6 @@ Check that the AEA version matches the specifier set. :raises ValueError if the version of the aea framework falls within a specifier. - -#### update - -```python - | update(data: Dict) -> None -``` - -Update configuration with other data. - -**Arguments**: - -- `data`: the data to replace. - -**Returns**: - -None - ## ConnectionConfig Objects @@ -1019,9 +1317,11 @@ Initialize from a JSON object. Update configuration with other data. +This method does side-effect on the configuration object. + **Arguments**: -- `data`: the data to replace. +- `data`: the data to populate or replace. **Returns**: @@ -1337,6 +1637,26 @@ Return the JSON representation. Initialize from a JSON object. + +#### update + +```python + | update(data: Dict) -> None +``` + +Update configuration with other data. + +To update the component parts, populate the field "component_configurations" as a +mapping from ComponentId to configurations. + +**Arguments**: + +- `data`: the data to replace. + +**Returns**: + +None + ## SpeechActContentConfig Objects diff --git a/docs/api/configurations/loader.md b/docs/api/configurations/loader.md index 5898403b87..434ddbdf91 100644 --- a/docs/api/configurations/loader.md +++ b/docs/api/configurations/loader.md @@ -20,30 +20,29 @@ Make the JSONSchema base URI, cross-platform. the string in URI form. - -## ConfigLoader Objects + +## BaseConfigLoader Objects ```python -class ConfigLoader(Generic[T]) +class BaseConfigLoader() ``` -This class implement parsing, serialization and validation functionalities for the 'aea' configuration files. +Base class for configuration loader classes. - + #### `__`init`__` ```python - | __init__(schema_filename: str, configuration_class: Type[T]) + | __init__(schema_filename: str) ``` -Initialize the parser for configuration files. +Initialize the base configuration loader. **Arguments**: -- `schema_filename`: the path to the JSON-schema file in 'aea/configurations/schemas'. -- `configuration_class`: the configuration class (e.g. AgentConfig, SkillConfig etc.) +- `schema_filename`: the path to the schema. - + #### validator ```python @@ -53,7 +52,24 @@ Initialize the parser for configuration files. Get the json schema validator. - + +#### validate + +```python + | validate(json_data: Dict) -> None +``` + +Validate a JSON object. + +**Arguments**: + +- `json_data`: the JSON data. + +**Returns**: + +None. + + #### required`_`fields ```python @@ -61,12 +77,35 @@ Get the json schema validator. | required_fields() -> List[str] ``` -Get required fields. +Get the required fields. **Returns**: list of required fields. + +## ConfigLoader Objects + +```python +class ConfigLoader(Generic[T], BaseConfigLoader) +``` + +Parsing, serialization and validation for package configuration files. + + +#### `__`init`__` + +```python + | __init__(schema_filename: str, configuration_class: Type[T]) +``` + +Initialize the parser for configuration files. + +**Arguments**: + +- `schema_filename`: the path to the JSON-schema file in 'aea/configurations/schemas'. +- `configuration_class`: the configuration class (e.g. AgentConfig, SkillConfig etc.) + #### configuration`_`class @@ -102,7 +141,7 @@ the configuration object. | validate(json_data: Dict) -> None ``` -Validate a JSON object. +Validate a JSON object against the right JSON schema. **Arguments**: @@ -157,6 +196,48 @@ None Get the configuration loader from the type. + +#### load`_`agent`_`config`_`from`_`json + +```python + | load_agent_config_from_json(configuration_json: List[Dict]) -> AgentConfig +``` + +Load agent configuration from configuration json data. + +**Arguments**: + +- `configuration_json`: list of dicts with aea configuration + +**Returns**: + +AgentConfig instance + + +#### validate`_`component`_`configuration + +```python + | @staticmethod + | validate_component_configuration(component_id: ComponentId, configuration: Dict) -> None +``` + +Validate the component configuration of an agent configuration file. + +This check is to detect inconsistencies in the specified fields. + +**Arguments**: + +- `component_id`: the component id. +- `configuration`: the configuration dictionary. + +**Returns**: + +None + +**Raises**: + +- `ValueError`: if the configuration is not valid. + ## ConfigLoaders Objects diff --git a/docs/api/configurations/project.md b/docs/api/configurations/project.md new file mode 100644 index 0000000000..1c9445e1c4 --- /dev/null +++ b/docs/api/configurations/project.md @@ -0,0 +1,69 @@ + +# aea.configurations.project + +This module contains the implementation of AEA agents project configuiration. + + +## Project Objects + +```python +class Project() +``` + +Agent project representation. + + +#### `__`init`__` + +```python + | __init__(public_id: PublicId, path: str) +``` + +Init project with public_id and project's path. + + +#### load + +```python + | @classmethod + | load(cls, working_dir: str, public_id: PublicId) -> "Project" +``` + +Load project with given public_id to working_dir. + + +#### remove + +```python + | remove() -> None +``` + +Remove project, do cleanup. + + +## AgentAlias Objects + +```python +class AgentAlias() +``` + +Agent alias representation. + + +#### `__`init`__` + +```python + | __init__(project: Project, agent_name: str, config: List[Dict], agent: AEA, builder: AEABuilder) +``` + +Init agent alias with project, config, name, agent, builder. + + +#### remove`_`from`_`project + +```python + | remove_from_project() +``` + +Remove agent alias from project. + diff --git a/docs/api/connections/base.md b/docs/api/connections/base.md index 0d6b04372f..89cd6d2dd4 100644 --- a/docs/api/connections/base.md +++ b/docs/api/connections/base.md @@ -25,7 +25,7 @@ Abstract definition of a connection. #### `__`init`__` ```python - | __init__(configuration: ConnectionConfig, identity: Optional[Identity] = None, crypto_store: Optional[CryptoStore] = None, restricted_to_protocols: Optional[Set[PublicId]] = None, excluded_protocols: Optional[Set[PublicId]] = None, **kwargs) + | __init__(configuration: ConnectionConfig, identity: Optional[Identity] = None, crypto_store: Optional[CryptoStore] = None, restricted_to_protocols: Optional[Set[PublicId]] = None, excluded_protocols: Optional[Set[PublicId]] = None, **kwargs, ,) ``` Initialize the connection. @@ -208,7 +208,7 @@ the connection object. ```python | @classmethod - | from_config(cls, configuration: ConnectionConfig, identity: Identity, crypto_store: CryptoStore, **kwargs) -> "Connection" + | from_config(cls, configuration: ConnectionConfig, identity: Identity, crypto_store: CryptoStore, **kwargs, ,) -> "Connection" ``` Load a connection from a configuration. diff --git a/docs/api/crypto/base.md b/docs/api/crypto/base.md index 2b5d26b2d6..cc11f5f86e 100644 --- a/docs/api/crypto/base.md +++ b/docs/api/crypto/base.md @@ -310,6 +310,21 @@ Get the hash of a message. the hash of the message. + +#### is`_`valid`_`address + +```python + | @classmethod + | @abstractmethod + | is_valid_address(cls, address: Address) -> bool +``` + +Check if the address is valid. + +**Arguments**: + +- `address`: the address to validate + ## LedgerApi Objects diff --git a/docs/api/crypto/cosmos.md b/docs/api/crypto/cosmos.md index 8e4566442f..b184a972e1 100644 --- a/docs/api/crypto/cosmos.md +++ b/docs/api/crypto/cosmos.md @@ -127,6 +127,20 @@ Get the hash of a message. the hash of the message. + +#### is`_`valid`_`address + +```python + | @classmethod + | is_valid_address(cls, address: Address) -> bool +``` + +Check if the address is valid. + +**Arguments**: + +- `address`: the address to validate + ## CosmosCrypto Objects @@ -423,7 +437,7 @@ the unsigned CosmWasm HandleMsg | @staticmethod | @try_decorator( | "Encountered exception when trying to execute wasm transaction: {}", - | logger_method=logger.warning, + | logger_method=_default_logger.warning, | ) | try_execute_wasm_transaction(tx_signed: Any, signed_tx_filename: str = "tx.signed") -> Optional[str] ``` @@ -445,7 +459,7 @@ the transaction digest | @staticmethod | @try_decorator( | "Encountered exception when trying to execute wasm query: {}", - | logger_method=logger.warning, + | logger_method=_default_logger.warning, | ) | try_execute_wasm_query(contract_address: Address, query_msg: Any) -> Optional[str] ``` @@ -614,15 +628,6 @@ class CosmosApi(_CosmosApi, CosmosHelper) Class to interact with the Cosmos SDK via a HTTP APIs. - -## CosmWasmCLIWrapper Objects - -```python -class CosmWasmCLIWrapper() -``` - -Wrapper of the CosmWasm CLI. - ## CosmosFaucetApi Objects diff --git a/docs/api/crypto/ethereum.md b/docs/api/crypto/ethereum.md index c6f1dc926e..7f291a091b 100644 --- a/docs/api/crypto/ethereum.md +++ b/docs/api/crypto/ethereum.md @@ -438,6 +438,20 @@ Attempts to update the transaction with a gas estimate. the transaction (potentially updated) + +#### is`_`valid`_`address + +```python + | @classmethod + | is_valid_address(cls, address: Address) -> bool +``` + +Check if the address is valid. + +**Arguments**: + +- `address`: the address to validate + ## EthereumFaucetApi Objects diff --git a/docs/api/decision_maker/base.md b/docs/api/decision_maker/base.md index 65ecb1c0d5..b21e754473 100644 --- a/docs/api/decision_maker/base.md +++ b/docs/api/decision_maker/base.md @@ -313,7 +313,7 @@ internal message ## DecisionMakerHandler Objects ```python -class DecisionMakerHandler(ABC) +class DecisionMakerHandler(WithLogger, ABC) ``` This class implements the decision maker. @@ -331,6 +331,7 @@ Initialize the decision maker handler. - `identity`: the identity - `wallet`: the wallet +- `logger`: the logger - `kwargs`: the key word arguments @@ -405,7 +406,7 @@ None ## DecisionMaker Objects ```python -class DecisionMaker() +class DecisionMaker(WithLogger) ``` This class implements the decision maker. diff --git a/docs/api/helpers/async_utils.md b/docs/api/helpers/async_utils.md index a55cc92680..4b6bc6857c 100644 --- a/docs/api/helpers/async_utils.md +++ b/docs/api/helpers/async_utils.md @@ -151,25 +151,6 @@ Activate period calls. Remove from schedule. - -#### ensure`_`loop - -```python -ensure_loop(loop: Optional[AbstractEventLoop] = None) -> AbstractEventLoop -``` - -Use loop provided or create new if not provided or closed. - -Return loop passed if its provided,not closed and not running, otherwise returns new event loop. - -**Arguments**: - -- `loop`: optional event loop - -**Returns**: - -asyncio event loop - ## AnotherThreadTask Objects @@ -295,7 +276,7 @@ Stop event loop in thread. class AwaitableProc() ``` -Async-friendly subprocess.Popen +Async-friendly subprocess.Popen. #### `__`init`__` @@ -313,7 +294,7 @@ Initialise awaitable proc. | async start() ``` -Start the subprocess +Start the subprocess. ## ItemGetter Objects @@ -368,3 +349,104 @@ Init HandlerItemGetter. - `getters`: List of tuples of handler and couroutine to be awaiteed for an item. + +## Runnable Objects + +```python +class Runnable(ABC) +``` + +Abstract Runnable class. + +Use to run async task in same event loop or in dedicated thread. +Provides: start, stop sync methods to start and stop task +Use wait_completed to await task was completed. + + +#### `__`init`__` + +```python + | __init__(loop: asyncio.AbstractEventLoop = None, threaded: bool = False) -> None +``` + +Init runnable. + +**Arguments**: + +- `loop`: asyncio event loop to use. +- `threaded`: bool. start in thread if True. + +**Returns**: + +None + + +#### start + +```python + | start() -> bool +``` + +Start runnable. + +**Returns**: + +bool started or not. + + +#### is`_`running + +```python + | @property + | is_running() -> bool +``` + +Get running state. + + +#### run + +```python + | @abstractmethod + | async run() -> Any +``` + +Implement run logic respectfull to CancelError on termination. + + +#### wait`_`completed + +```python + | wait_completed(sync: bool = False, timeout: float = None, force_result: bool = False) -> Awaitable +``` + +Wait runnable execution completed. + +**Arguments**: + +- `sync`: bool. blocking wait +- `timeout`: float seconds +- `force_result`: check result even it was waited. + +**Returns**: + +awaitable if sync is False, otherise None + + +#### stop + +```python + | stop(force: bool = False) -> None +``` + +Stop runnable. + + +#### start`_`and`_`wait`_`completed + +```python + | start_and_wait_completed(*args, **kwargs) -> Awaitable +``` + +Alias for start and wait methods. + diff --git a/docs/api/helpers/base.md b/docs/api/helpers/base.md index 708e1a5c7d..e888cfada1 100644 --- a/docs/api/helpers/base.md +++ b/docs/api/helpers/base.md @@ -3,58 +3,6 @@ Miscellaneous helpers. - -#### yaml`_`load - -```python -@_ordered_loading -yaml_load(*args, **kwargs) -> Dict[str, Any] -``` - -Load a yaml from a file pointer in an ordered way. - -**Returns**: - -the yaml - - -#### yaml`_`load`_`all - -```python -@_ordered_loading -yaml_load_all(*args, **kwargs) -> List[Dict[str, Any]] -``` - -Load a multi-paged yaml from a file pointer in an ordered way. - -**Returns**: - -the yaml - - -#### yaml`_`dump - -```python -@_ordered_dumping -yaml_dump(*args, **kwargs) -> None -``` - -Dump multi-paged yaml data to a yaml file in an ordered way. - -:return None - - -#### yaml`_`dump`_`all - -```python -@_ordered_dumping -yaml_dump_all(*args, **kwargs) -> None -``` - -Dump multi-paged yaml data to a yaml file in an ordered way. - -:return None - #### locate @@ -269,3 +217,50 @@ Run code in context to log and re raise exception. - `log_method`: function to print log - `message`: message template to add error text. + +#### recursive`_`update + +```python +recursive_update(to_update: Dict, new_values: Dict) -> None +``` + +Update a dictionary by replacing conflicts with the new values. + +It does side-effects to the first dictionary. + +>>> to_update = dict(a=1, b=2, subdict=dict(subfield1=1)) +>>> new_values = dict(b=3, subdict=dict(subfield1=2)) +>>> recursive_update(to_update, new_values) +>>> to_update +{'a': 1, 'b': 3, 'subdict': {'subfield1': 2}} + +**Arguments**: + +- `to_update`: the dictionary to update. +- `new_values`: the dictionary of new values to replace. + +**Returns**: + +None + + +#### find`_`topological`_`order + +```python +find_topological_order(adjacency_list: Dict[T, Set[T]]) -> List[T] +``` + +Compute the topological order of a graph (using Kahn's algorithm). + +**Arguments**: + +- `adjacency_list`: the adjacency list of the graph. + +**Returns**: + +the topological order for the graph (as a sequence of nodes) + +**Raises**: + +- `ValueError`: if the graph contains a cycle. + diff --git a/docs/api/helpers/dialogue/base.md b/docs/api/helpers/dialogue/base.md index 45cebfd2dd..5246772559 100644 --- a/docs/api/helpers/dialogue/base.md +++ b/docs/api/helpers/dialogue/base.md @@ -395,6 +395,20 @@ Get the dialogue rules. the rules + +#### message`_`class + +```python + | @property + | message_class() -> Type[Message] +``` + +Get the message class. + +**Returns**: + +the message class + #### is`_`self`_`initiated @@ -469,7 +483,7 @@ True if empty, False otherwise #### reply ```python - | reply(performative: Message.Performative, target_message: Optional[Message] = None, **kwargs, ,) -> Message + | reply(performative: Message.Performative, target_message: Optional[Message] = None, target: Optional[int] = None, **kwargs, ,) -> Message ``` Reply to the 'target_message' in this dialogue with a message with 'performative', and contents from kwargs. @@ -479,6 +493,7 @@ Note if no target_message is provided, the last message in the dialogue will be **Arguments**: - `target_message`: the message to reply to. +- `target`: the id of the message to reply to. - `performative`: the performative of the reply message. - `kwargs`: the content of the reply message. @@ -620,6 +635,34 @@ Get the dialogue statistics. dialogue stats object + +#### message`_`class + +```python + | @property + | message_class() -> Type[Message] +``` + +Get the message class. + +**Returns**: + +the message class + + +#### dialogue`_`class + +```python + | @property + | dialogue_class() -> Type[Dialogue] +``` + +Get the dialogue class. + +**Returns**: + +the dialogue class + #### get`_`dialogues`_`with`_`counterparty @@ -641,7 +684,8 @@ The dialogues with the counterparty. #### new`_`self`_`initiated`_`dialogue`_`reference ```python - | new_self_initiated_dialogue_reference() -> Tuple[str, str] + | @classmethod + | new_self_initiated_dialogue_reference(cls) -> Tuple[str, str] ``` Return a dialogue label for a new self initiated dialogue. diff --git a/docs/api/helpers/logging.md b/docs/api/helpers/logging.md index 9269100ea3..39338adf68 100644 --- a/docs/api/helpers/logging.md +++ b/docs/api/helpers/logging.md @@ -3,6 +3,15 @@ Logging helpers. + +#### get`_`logger + +```python +get_logger(module_path: str, agent_name: str) -> Logger +``` + +Get the logger based on a module path and agent name. + ## AgentLoggerAdapter Objects diff --git a/docs/api/helpers/multiaddr/base.md b/docs/api/helpers/multiaddr/base.md index d7a9062ce3..35956a134a 100644 --- a/docs/api/helpers/multiaddr/base.md +++ b/docs/api/helpers/multiaddr/base.md @@ -10,22 +10,23 @@ This module contains multiaddress class. class MultiAddr() ``` -Protocol Labs' Multiaddress representation of a network address +Protocol Labs' Multiaddress representation of a network address. #### `__`init`__` ```python - | __init__(host: str, port: int, public_key: str) + | __init__(host: str, port: int, public_key: Optional[str] = None, multihash_id: Optional[str] = None) ``` -Initialize a multiaddress +Initialize a multiaddress. **Arguments**: - `host`: ip host of the address -- `host`: port number of the address -- `host`: hex encoded public key. Must conform to Bitcoin EC encoding standard for Secp256k1 +- `port`: port number of the address +- `public_key`: hex encoded public key. Must conform to Bitcoin EC encoding standard for Secp256k1 +- `multihash_id`: a multihash of the public key #### compute`_`peerid @@ -48,6 +49,20 @@ libp2p PeerID from Bitcoin EC encoded Secp256k1 public key. the peer id. + +#### from`_`string + +```python + | @classmethod + | from_string(cls, maddr: str) -> "MultiAddr" +``` + +Construct a MultiAddr object from its string format + +**Arguments**: + +- `maddr`: multiaddress string + #### public`_`key @@ -68,6 +83,26 @@ Get the public key. Get the peer id. + +#### host + +```python + | @property + | host() -> str +``` + +Get the peer host. + + +#### port + +```python + | @property + | port() -> int +``` + +Get the peer port. + #### format @@ -75,7 +110,7 @@ Get the peer id. | format() -> str ``` -Canonical representation of a multiaddress +Canonical representation of a multiaddress. #### `__`str`__` diff --git a/docs/api/helpers/pipe.md b/docs/api/helpers/pipe.md index 0597f6acfc..47262b7de2 100644 --- a/docs/api/helpers/pipe.md +++ b/docs/api/helpers/pipe.md @@ -10,7 +10,7 @@ Portable pipe implementation for Linux, MacOS, and Windows. class IPCChannelClient(ABC) ``` -Multi-platform interprocess communication channel for the client side +Multi-platform interprocess communication channel for the client side. #### connect @@ -35,6 +35,7 @@ Connect to communication channel ``` Write `data` bytes to the other end of the channel + Will first write the size than the actual data **Arguments**: @@ -50,6 +51,7 @@ Will first write the size than the actual data ``` Read bytes from the other end of the channel + Will first read the size than the actual data **Returns**: @@ -64,7 +66,11 @@ read bytes | async close() -> None ``` -Close the communication channel +Close the communication channel. + +**Returns**: + +None ## IPCChannel Objects @@ -73,7 +79,7 @@ Close the communication channel class IPCChannel(IPCChannelClient) ``` -Multi-platform interprocess communication channel +Multi-platform interprocess communication channel. #### in`_`path @@ -84,7 +90,11 @@ Multi-platform interprocess communication channel | in_path() -> str ``` -Rendezvous point for incoming communication +Rendezvous point for incoming communication. + +**Returns**: + +path #### out`_`path @@ -95,7 +105,11 @@ Rendezvous point for incoming communication | out_path() -> str ``` -Rendezvous point for outgoing communication +Rendezvous point for outgoing communication. + +**Returns**: + +path ## PosixNamedPipeProtocol Objects @@ -104,7 +118,7 @@ Rendezvous point for outgoing communication class PosixNamedPipeProtocol() ``` -Posix named pipes async wrapper communication protocol +Posix named pipes async wrapper communication protocol. #### `__`init`__` @@ -113,7 +127,7 @@ Posix named pipes async wrapper communication protocol | __init__(in_path: str, out_path: str, logger: logging.Logger = _default_logger, loop: Optional[AbstractEventLoop] = None) ``` -Initialize a new posix named pipe +Initialize a new posix named pipe. **Arguments**: @@ -170,7 +184,7 @@ read bytes | async close() -> None ``` -Disconnect pipe +Disconnect pipe. ## TCPSocketProtocol Objects @@ -179,7 +193,7 @@ Disconnect pipe class TCPSocketProtocol() ``` -TCP socket communication protocol +TCP socket communication protocol. #### `__`init`__` @@ -188,7 +202,7 @@ TCP socket communication protocol | __init__(reader: asyncio.StreamReader, writer: asyncio.StreamWriter, logger: logging.Logger = _default_logger, loop: Optional[AbstractEventLoop] = None) ``` -Initialize the tcp socket protocol +Initialize the tcp socket protocol. **Arguments**: @@ -228,7 +242,7 @@ read bytes | async close() -> None ``` -Disconnect socket +Disconnect socket. ## TCPSocketChannel Objects @@ -237,7 +251,7 @@ Disconnect socket class TCPSocketChannel(IPCChannel) ``` -Interprocess communication channel implementation using tcp sockets +Interprocess communication channel implementation using tcp sockets. #### `__`init`__` @@ -246,7 +260,7 @@ Interprocess communication channel implementation using tcp sockets | __init__(logger: logging.Logger = _default_logger, loop: Optional[AbstractEventLoop] = None) ``` -Initialize tcp socket interprocess communication channel +Initialize tcp socket interprocess communication channel. #### connect @@ -255,7 +269,7 @@ Initialize tcp socket interprocess communication channel | async connect(timeout: float = PIPE_CONN_TIMEOUT) -> bool ``` -Setup communication channel and wait for other end to connect +Setup communication channel and wait for other end to connect. **Arguments**: @@ -294,7 +308,7 @@ Read from channel. | async close() -> None ``` -Disconnect from channel and clean it up +Disconnect from channel and clean it up. #### in`_`path @@ -304,7 +318,7 @@ Disconnect from channel and clean it up | in_path() -> str ``` -Rendezvous point for incoming communication +Rendezvous point for incoming communication. #### out`_`path @@ -314,7 +328,7 @@ Rendezvous point for incoming communication | out_path() -> str ``` -Rendezvous point for outgoing communication +Rendezvous point for outgoing communication. ## PosixNamedPipeChannel Objects @@ -323,7 +337,7 @@ Rendezvous point for outgoing communication class PosixNamedPipeChannel(IPCChannel) ``` -Interprocess communication channel implementation using Posix named pipes +Interprocess communication channel implementation using Posix named pipes. #### `__`init`__` @@ -332,7 +346,7 @@ Interprocess communication channel implementation using Posix named pipes | __init__(logger: logging.Logger = _default_logger, loop: Optional[AbstractEventLoop] = None) ``` -Initialize posix named pipe interprocess communication channel +Initialize posix named pipe interprocess communication channel. #### connect @@ -341,12 +355,16 @@ Initialize posix named pipe interprocess communication channel | async connect(timeout: float = PIPE_CONN_TIMEOUT) -> bool ``` -Setup communication channel and wait for other end to connect +Setup communication channel and wait for other end to connect. **Arguments**: - `timeout`: timeout for connection to be established +**Returns**: + +bool, indicating sucess + #### write @@ -380,7 +398,7 @@ read bytes | async close() -> None ``` -Close the channel and clean it up +Close the channel and clean it up. #### in`_`path @@ -390,7 +408,7 @@ Close the channel and clean it up | in_path() -> str ``` -Rendezvous point for incoming communication +Rendezvous point for incoming communication. #### out`_`path @@ -400,7 +418,7 @@ Rendezvous point for incoming communication | out_path() -> str ``` -Rendezvous point for outgoing communication +Rendezvous point for outgoing communication. ## TCPSocketChannelClient Objects @@ -409,7 +427,7 @@ Rendezvous point for outgoing communication class TCPSocketChannelClient(IPCChannelClient) ``` -Interprocess communication channel client using tcp sockets +Interprocess communication channel client using tcp sockets. #### `__`init`__` @@ -418,7 +436,7 @@ Interprocess communication channel client using tcp sockets | __init__(in_path: str, out_path: str, logger: logging.Logger = _default_logger, loop: Optional[AbstractEventLoop] = None) ``` -Initialize a tcp socket communication channel client +Initialize a tcp socket communication channel client. **Arguments**: @@ -432,7 +450,7 @@ Initialize a tcp socket communication channel client | async connect(timeout: float = PIPE_CONN_TIMEOUT) -> bool ``` -Connect to the other end of the communication channel +Connect to the other end of the communication channel. **Arguments**: @@ -445,7 +463,7 @@ Connect to the other end of the communication channel | async write(data: bytes) -> None ``` -Write data to channel +Write data to channel. **Arguments**: @@ -458,7 +476,7 @@ Write data to channel | async read() -> Optional[bytes] ``` -Read data from channel +Read data from channel. **Returns**: @@ -471,7 +489,7 @@ read bytes | async close() -> None ``` -Disconnect from communication channel +Disconnect from communication channel. ## PosixNamedPipeChannelClient Objects @@ -480,7 +498,7 @@ Disconnect from communication channel class PosixNamedPipeChannelClient(IPCChannelClient) ``` -Interprocess communication channel client using Posix named pipes +Interprocess communication channel client using Posix named pipes. #### `__`init`__` @@ -489,7 +507,7 @@ Interprocess communication channel client using Posix named pipes | __init__(in_path: str, out_path: str, logger: logging.Logger = _default_logger, loop: Optional[AbstractEventLoop] = None) ``` -Initialize a posix named pipe communication channel client +Initialize a posix named pipe communication channel client. **Arguments**: @@ -503,7 +521,7 @@ Initialize a posix named pipe communication channel client | async connect(timeout: float = PIPE_CONN_TIMEOUT) -> bool ``` -Connect to the other end of the communication channel +Connect to the other end of the communication channel. **Arguments**: @@ -516,7 +534,7 @@ Connect to the other end of the communication channel | async write(data: bytes) -> None ``` -Write data to channel +Write data to channel. **Arguments**: @@ -529,7 +547,7 @@ Write data to channel | async read() -> Optional[bytes] ``` -Read data from channel +Read data from channel. **Returns**: @@ -542,7 +560,7 @@ read bytes | async close() -> None ``` -Disconnect from communication channel +Disconnect from communication channel. #### make`_`ipc`_`channel @@ -553,6 +571,15 @@ make_ipc_channel(logger: logging.Logger = _default_logger, loop: Optional[Abstra Build a portable bidirectional InterProcess Communication channel +**Arguments**: + +- `logger`: the logger +- `loop`: the loop + +**Returns**: + +IPCChannel + #### make`_`ipc`_`channel`_`client @@ -566,4 +593,10 @@ Build a portable bidirectional InterProcess Communication client channel - `in_path`: rendezvous point for incoming communication - `out_path`: rendezvous point for outgoing outgoing +- `logger`: the logger +- `loop`: the loop + +**Returns**: + +IPCChannel diff --git a/docs/api/helpers/search/models.md b/docs/api/helpers/search/models.md index 4a520db72e..b291442541 100644 --- a/docs/api/helpers/search/models.md +++ b/docs/api/helpers/search/models.md @@ -59,6 +59,15 @@ Get the distance to another location. Compare equality of two locations. + +#### `__`str`__` + +```python + | __str__() +``` + +Get the string representation of the data model. + ## AttributeInconsistencyException Objects @@ -105,6 +114,15 @@ Initialize an attribute. Compare with another object. + +#### `__`str`__` + +```python + | __str__() +``` + +Get the string representation of the data model. + ## DataModel Objects @@ -137,6 +155,15 @@ Initialize a data model. Compare with another object. + +#### `__`str`__` + +```python + | __str__() +``` + +Get the string representation of the data model. + #### generate`_`data`_`model @@ -210,6 +237,15 @@ Compare with another object. Create an iterator. + +#### `__`str`__` + +```python + | __str__() +``` + +Get the string representation of the description. + #### encode @@ -412,6 +448,15 @@ True if the value satisfy the constraint, False otherwise. Check equality with another object. + +#### `__`str`__` + +```python + | __str__() +``` + +Get the string representation of the constraint type. + ## ConstraintExpr Objects @@ -801,6 +846,15 @@ Check whether the constraint expression is valid wrt a data model. Compare with another object. + +#### `__`str`__` + +```python + | __str__() +``` + +Get the string representation of the constraint. + ## Query Objects @@ -880,6 +934,15 @@ Check whether the` object is valid. Compare with another object. + +#### `__`str`__` + +```python + | __str__() +``` + +Get the string representation of the constraint. + #### encode diff --git a/docs/api/helpers/transaction/base.md b/docs/api/helpers/transaction/base.md index d7f9b47d5f..2db69505a1 100644 --- a/docs/api/helpers/transaction/base.md +++ b/docs/api/helpers/transaction/base.md @@ -82,6 +82,24 @@ A new instance of this class must be created that matches the protocol buffer ob A new instance of this class that matches the protocol buffer object in the 'raw_transaction_protobuf_object' argument. + +#### `__`eq`__` + +```python + | __eq__(other) +``` + +Check equality. + + +#### `__`str`__` + +```python + | __str__() +``` + +Get string representation. + ## RawMessage Objects @@ -171,6 +189,24 @@ A new instance of this class must be created that matches the protocol buffer ob A new instance of this class that matches the protocol buffer object in the 'raw_message_protobuf_object' argument. + +#### `__`eq`__` + +```python + | __eq__(other) +``` + +Check equality. + + +#### `__`str`__` + +```python + | __str__() +``` + +Get string representation. + ## SignedTransaction Objects @@ -250,6 +286,24 @@ A new instance of this class must be created that matches the protocol buffer ob A new instance of this class that matches the protocol buffer object in the 'signed_transaction_protobuf_object' argument. + +#### `__`eq`__` + +```python + | __eq__(other) +``` + +Check equality. + + +#### `__`str`__` + +```python + | __str__() +``` + +Get string representation. + ## SignedMessage Objects @@ -339,6 +393,24 @@ A new instance of this class must be created that matches the protocol buffer ob A new instance of this class that matches the protocol buffer object in the 'signed_message_protobuf_object' argument. + +#### `__`eq`__` + +```python + | __eq__(other) +``` + +Check equality. + + +#### `__`str`__` + +```python + | __str__() +``` + +Get string representation. + ## State Objects @@ -418,6 +490,24 @@ A new instance of this class must be created that matches the protocol buffer ob A new instance of this class that matches the protocol buffer object in the 'state_protobuf_object' argument. + +#### `__`eq`__` + +```python + | __eq__(other) +``` + +Check equality. + + +#### `__`str`__` + +```python + | __str__() +``` + +Get string representation. + ## Terms Objects @@ -784,6 +874,24 @@ A new instance of this class must be created that matches the protocol buffer ob A new instance of this class that matches the protocol buffer object in the 'terms_protobuf_object' argument. + +#### `__`eq`__` + +```python + | __eq__(other) +``` + +Check equality. + + +#### `__`str`__` + +```python + | __str__() +``` + +Get string representation. + ## TransactionDigest Objects @@ -863,6 +971,24 @@ A new instance of this class must be created that matches the protocol buffer ob A new instance of this class that matches the protocol buffer object in the 'transaction_digest_protobuf_object' argument. + +#### `__`eq`__` + +```python + | __eq__(other) +``` + +Check equality. + + +#### `__`str`__` + +```python + | __str__() +``` + +Get string representation. + ## TransactionReceipt Objects @@ -952,3 +1078,21 @@ A new instance of this class must be created that matches the protocol buffer ob A new instance of this class that matches the protocol buffer object in the 'transaction_receipt_protobuf_object' argument. + +#### `__`eq`__` + +```python + | __eq__(other) +``` + +Check equality. + + +#### `__`str`__` + +```python + | __str__() +``` + +Get string representation. + diff --git a/docs/api/helpers/yaml_utils.md b/docs/api/helpers/yaml_utils.md new file mode 100644 index 0000000000..73851b287a --- /dev/null +++ b/docs/api/helpers/yaml_utils.md @@ -0,0 +1,128 @@ + +# aea.helpers.yaml`_`utils + +Helper functions related to YAML loading/dumping. + + +## `_`AEAYamlLoader Objects + +```python +class _AEAYamlLoader(yaml.SafeLoader) +``` + +Custom yaml.SafeLoader for the AEA framework. + +It extends the default SafeLoader in two ways: +- loads YAML configurations while *remembering the order of the fields*; +- resolves the environment variables at loading time. + +This class is for internal usage only; please use +the public functions of the module 'yaml_load' and 'yaml_load_all'. + + +#### `__`init`__` + +```python + | __init__(*args, **kwargs) +``` + +Initialize the AEAYamlLoader. + +It adds a YAML Loader constructor to use 'OderedDict' to load the files. + + +## `_`AEAYamlDumper Objects + +```python +class _AEAYamlDumper(yaml.SafeDumper) +``` + +Custom yaml.SafeDumper for the AEA framework. + +It extends the default SafeDumper so to dump +YAML configurations while *following the order of the fields*. + +This class is for internal usage only; please use +the public functions of the module 'yaml_dump' and 'yaml_dump_all'. + + +#### `__`init`__` + +```python + | __init__(*args, **kwargs) +``` + +Initialize the AEAYamlDumper. + +It adds a YAML Dumper representer to use 'OderedDict' to dump the files. + + +#### yaml`_`load + +```python +yaml_load(stream: TextIO) -> Dict[str, Any] +``` + +Load a yaml from a file pointer in an ordered way. + +**Arguments**: + +- `stream`: file pointer to the input file. + +**Returns**: + +the dictionary object with the YAML file content. + + +#### yaml`_`load`_`all + +```python +yaml_load_all(stream: TextIO) -> List[Dict[str, Any]] +``` + +Load a multi-paged yaml from a file pointer in an ordered way. + +**Arguments**: + +- `stream`: file pointer to the input file. + +**Returns**: + +the list of dictionary objects with the (multi-paged) YAML file content. + + +#### yaml`_`dump + +```python +yaml_dump(data: Dict, stream: Optional[TextIO] = None) -> None +``` + +Dump YAML data to a yaml file in an ordered way. + +**Arguments**: + +- `data`: the data to write. +- `stream`: (optional) the file to write on. + +**Returns**: + +None + + +#### yaml`_`dump`_`all + +```python +yaml_dump_all(data: Sequence[Dict], stream: Optional[TextIO] = None) -> None +``` + +Dump YAML data to a yaml file in an ordered way. + +**Arguments**: + +- `data`: the data to write. +- `stream`: (optional) the file to write on. + +**Returns**: + +None + diff --git a/docs/api/mail/base.md b/docs/api/mail/base.md index 285d595974..77aff63feb 100644 --- a/docs/api/mail/base.md +++ b/docs/api/mail/base.md @@ -481,6 +481,26 @@ Get the connection id from an envelope context, if set. connection id + +#### is`_`sender`_`public`_`id + +```python + | @property + | is_sender_public_id() +``` + +Check if sender is a public id. + + +#### is`_`to`_`public`_`id + +```python + | @property + | is_to_public_id() +``` + +Check if to is a public id. + #### `__`eq`__` diff --git a/docs/api/manager.md b/docs/api/manager.md new file mode 100644 index 0000000000..16d3d62ed0 --- /dev/null +++ b/docs/api/manager.md @@ -0,0 +1,374 @@ + +# aea.manager + +This module contains the implementation of AEA agents manager. + + +## AgentRunAsyncTask Objects + +```python +class AgentRunAsyncTask() +``` + +Async task wrapper for agent. + + +#### `__`init`__` + +```python + | __init__(agent: AEA, loop: asyncio.AbstractEventLoop) -> None +``` + +Init task with agent and loop. + + +#### create`_`run`_`loop + +```python + | create_run_loop() -> None +``` + +Create run loop. + + +#### start + +```python + | start() -> None +``` + +Start task. + + +#### wait + +```python + | wait() -> asyncio.Future +``` + +Return future to wait task completed. + + +#### stop + +```python + | stop() -> None +``` + +Stop task. + + +#### run + +```python + | async run() -> None +``` + +Run task body. + + +#### is`_`running + +```python + | @property + | is_running() -> bool +``` + +Return is task running. + + +## AgentRunThreadTask Objects + +```python +class AgentRunThreadTask(AgentRunAsyncTask) +``` + +Threaded wrapper to run agent. + + +#### `__`init`__` + +```python + | __init__(agent: AEA, loop: asyncio.AbstractEventLoop) -> None +``` + +Init task with agent and loop. + + +#### create`_`run`_`loop + +```python + | create_run_loop() -> None +``` + +Create run loop. + + +#### start + +```python + | start() -> None +``` + +Run task in a dedicated thread. + + +## MultiAgentManager Objects + +```python +class MultiAgentManager() +``` + +Multi agents manager. + + +#### `__`init`__` + +```python + | __init__(working_dir: str, mode: str = "async") -> None +``` + +Initialize manager. + +**Arguments**: + +- `working_dir`: directory to store base agents. + + +#### is`_`running + +```python + | @property + | is_running() -> bool +``` + +Is manager running. + + +#### add`_`error`_`callback + +```python + | add_error_callback(error_callback: Callable[[str, BaseException], None]) -> None +``` + +Add error callback to call on error raised. + + +#### start`_`manager + +```python + | start_manager() -> "MultiAgentManager" +``` + +Start manager. + + +#### stop`_`manager + +```python + | stop_manager() -> "MultiAgentManager" +``` + +Stop manager. + +Stops all running agents and stop agent. + +**Returns**: + +None + + +#### add`_`project + +```python + | add_project(public_id: PublicId) -> "MultiAgentManager" +``` + +Fetch agent project and all dependencies to working_dir. + + +#### remove`_`project + +```python + | remove_project(public_id: PublicId) -> "MultiAgentManager" +``` + +Remove agent project. + + +#### list`_`projects + +```python + | list_projects() -> List[PublicId] +``` + +List all agents projects added. + +**Returns**: + +lit of public ids of projects + + +#### add`_`agent + +```python + | add_agent(public_id: PublicId, agent_name: Optional[str] = None, agent_overrides: Optional[dict] = None, component_overrides: Optional[List[dict]] = None) -> "MultiAgentManager" +``` + +Create new agent configuration based on project with config overrides applied. + +Alias is stored in memory only! + +**Arguments**: + +- `public_id`: base agent project public id +- `agent_name`: unique name for the agent +- `agent_overrides`: overrides for agent config. +- `component_overrides`: overrides for component section. + +**Returns**: + +manager + + +#### list`_`agents + +```python + | list_agents(running_only: bool = False) -> List[str] +``` + +List all agents. + +**Arguments**: + +- `running_only`: returns only running if set to True + +**Returns**: + +list of agents names + + +#### remove`_`agent + +```python + | remove_agent(agent_name: str) -> "MultiAgentManager" +``` + +Remove agent alias definition from registry. + +**Arguments**: + +- `agent_name`: agent name to remove + +**Returns**: + +None + + +#### start`_`agent + +```python + | start_agent(agent_name: str) -> "MultiAgentManager" +``` + +Start selected agent. + +**Arguments**: + +- `agent_name`: agent name to start + +**Returns**: + +None + + +#### start`_`all`_`agents + +```python + | start_all_agents() -> "MultiAgentManager" +``` + +Start all not started agents. + +**Returns**: + +None + + +#### stop`_`agent + +```python + | stop_agent(agent_name: str) -> "MultiAgentManager" +``` + +Stop running agent. + +**Arguments**: + +- `agent_name`: agent name to stop + +**Returns**: + +None + + +#### stop`_`all`_`agents + +```python + | stop_all_agents() -> "MultiAgentManager" +``` + +Stop all agents running. + +**Returns**: + +None + + +#### stop`_`agents + +```python + | stop_agents(agent_names: List[str]) -> "MultiAgentManager" +``` + +Stop specified agents. + +**Returns**: + +None + + +#### start`_`agents + +```python + | start_agents(agent_names: List[str]) -> "MultiAgentManager" +``` + +Stop specified agents. + +**Returns**: + +None + + +#### get`_`agent`_`alias + +```python + | get_agent_alias(agent_name: str) -> AgentAlias +``` + +Return details about agent alias definition. + +**Returns**: + +AgentAlias + + +#### install`_`pypi`_`dependencies + +```python + | install_pypi_dependencies() -> None +``` + +Install dependencies for every project has at least one agent alias. + diff --git a/docs/api/multiplexer.md b/docs/api/multiplexer.md index 0323f016dc..10c749f70b 100644 --- a/docs/api/multiplexer.md +++ b/docs/api/multiplexer.md @@ -65,7 +65,7 @@ Return is disconnected. ## AsyncMultiplexer Objects ```python -class AsyncMultiplexer(WithLogger) +class AsyncMultiplexer(Runnable, WithLogger) ``` This class can handle multiple connections at once. @@ -74,7 +74,7 @@ This class can handle multiple connections at once. #### `__`init`__` ```python - | __init__(connections: Optional[Sequence[Connection]] = None, default_connection_index: int = 0, loop: Optional[AbstractEventLoop] = None, exception_policy: ExceptionPolicyEnum = ExceptionPolicyEnum.propagate) + | __init__(connections: Optional[Sequence[Connection]] = None, default_connection_index: int = 0, loop: Optional[AbstractEventLoop] = None, exception_policy: ExceptionPolicyEnum = ExceptionPolicyEnum.propagate, threaded: bool = False, agent_name: str = "standalone") ``` Initialize the connection multiplexer. @@ -88,6 +88,15 @@ If connections is None, this parameter is ignored. - `loop`: the event loop to run the multiplexer. If None, a new event loop is created. - `agent_name`: the name of the agent that owns the multiplexer, for logging purposes. + +#### run + +```python + | async run() -> None +``` + +Run multiplexer connect and recv/send tasks. + #### default`_`connection @@ -285,6 +294,25 @@ running on a different thread than the one used in this function. None + +#### setup + +```python + | setup(connections: Collection[Connection], default_routing: Optional[Dict[PublicId, PublicId]] = None, default_connection: Optional[PublicId] = None) -> None +``` + +Set up the multiplexer. + +**Arguments**: + +- `connections`: the connections to use. It will replace the other ones. +- `default_routing`: the default routing. +- `default_connection`: the default connection. + +**Returns**: + +None. + ## Multiplexer Objects @@ -370,25 +398,6 @@ running on a different thread than the one used in this function. None - -#### setup - -```python - | setup(connections: Collection[Connection], default_routing: Optional[Dict[PublicId, PublicId]] = None, default_connection: Optional[PublicId] = None) -> None -``` - -Set up the multiplexer. - -**Arguments**: - -- `connections`: the connections to use. It will replace the other ones. -- `default_routing`: the default routing. -- `default_connection`: the default connection. - -**Returns**: - -None. - ## InBox Objects @@ -402,7 +411,7 @@ A queue from where you can only consume envelopes. #### `__`init`__` ```python - | __init__(multiplexer: Multiplexer) + | __init__(multiplexer: AsyncMultiplexer) ``` Initialize the inbox. @@ -498,7 +507,7 @@ A queue from where you can only enqueue envelopes. #### `__`init`__` ```python - | __init__(multiplexer: Multiplexer) + | __init__(multiplexer: AsyncMultiplexer) ``` Initialize the outbox. diff --git a/docs/api/protocols/generator/base.md b/docs/api/protocols/generator/base.md index 8859ed4742..9c29732e61 100644 --- a/docs/api/protocols/generator/base.md +++ b/docs/api/protocols/generator/base.md @@ -39,6 +39,7 @@ None ``` Run the generator in "protobuf only" mode: + a) validate the protocol specification. b) create the protocol buffer schema file. @@ -50,10 +51,11 @@ None #### generate`_`full`_`mode ```python - | generate_full_mode() -> None + | generate_full_mode() -> Optional[str] ``` Run the generator in "full" mode: + a) validates the protocol specification. b) creates the protocol buffer schema file. c) generates python modules. @@ -62,16 +64,17 @@ e) applies isort formatting **Returns**: -None +optional warning message #### generate ```python - | generate(protobuf_only: bool = False) -> None + | generate(protobuf_only: bool = False) -> Optional[str] ``` Run the generator. If in "full" mode (protobuf_only is False), it: + a) validates the protocol specification. b) creates the protocol buffer schema file. c) generates python modules. @@ -86,5 +89,5 @@ If in "protobuf only" mode (protobuf_only is True), it only does a) and b). **Returns**: -None +optional warning message. diff --git a/docs/api/protocols/generator/common.md b/docs/api/protocols/generator/common.md index 67247544c4..1bc0a01466 100644 --- a/docs/api/protocols/generator/common.md +++ b/docs/api/protocols/generator/common.md @@ -67,6 +67,23 @@ Run Black code formatting via subprocess. None + +#### try`_`run`_`isort`_`formatting + +```python +try_run_isort_formatting(path_to_protocol_package: str) -> None +``` + +Run Isort code formatting via subprocess. + +**Arguments**: + +- `path_to_protocol_package`: a path where formatting should be applied. + +**Returns**: + +None + #### try`_`run`_`protoc diff --git a/docs/api/registries/base.md b/docs/api/registries/base.md index 9306db7d64..71862594e5 100644 --- a/docs/api/registries/base.md +++ b/docs/api/registries/base.md @@ -16,11 +16,15 @@ This class implements an abstract registry. #### `__`init`__` ```python - | __init__() + | __init__(agent_name: str = "standalone") ``` Initialize the registry. +**Arguments**: + +- `agent_name`: the name of the agent + #### register @@ -35,7 +39,7 @@ Register an item. - `item_id`: the public id of the item. - `item`: the item. -- `is_dynamicall_added`: whether or not the item is dynamicall added. +- `is_dynamically_added`: whether or not the item is dynamically added. **Returns**: @@ -93,6 +97,20 @@ Fetch all the items. the list of items. + +#### ids + +```python + | @abstractmethod + | ids() -> Set[ItemId] +``` + +Return the set of all the used item ids. + +**Returns**: + +the set of item ids. + #### setup @@ -121,6 +139,98 @@ Teardown the registry. None + +## PublicIdRegistry Objects + +```python +class PublicIdRegistry(Generic[Item], Registry[PublicId, Item]) +``` + +This class implement a registry whose keys are public ids. + +In particular, it is able to handle the case when the public id +points to the 'latest' version of a package. + + +#### `__`init`__` + +```python + | __init__() +``` + +Initialize the registry. + + +#### register + +```python + | register(public_id: PublicId, item: Item, is_dynamically_added: bool = False) -> None +``` + +Register an item. + + +#### unregister + +```python + | unregister(public_id: PublicId) -> None +``` + +Unregister an item. + + +#### fetch + +```python + | fetch(public_id: PublicId) -> Optional[Item] +``` + +Fetch an item associated with a public id. + +**Arguments**: + +- `public_id`: the public id. + +**Returns**: + +an item, or None if the key is not present. + + +#### fetch`_`all + +```python + | fetch_all() -> List[Item] +``` + +Fetch all the items. + + +#### ids + +```python + | ids() -> Set[PublicId] +``` + +Get all the item ids. + + +#### setup + +```python + | setup() -> None +``` + +Set up the items. + + +#### teardown + +```python + | teardown() -> None +``` + +Tear down the items. + ## AgentComponentRegistry Objects @@ -134,11 +244,15 @@ This class implements a simple dictionary-based registry for agent components. #### `__`init`__` ```python - | __init__() -> None + | __init__(**kwargs) -> None ``` Instantiate the registry. +**Arguments**: + +- `kwargs`: kwargs + **Returns**: None @@ -156,7 +270,7 @@ Register a component. - `component_id`: the id of the component. - `component`: the component object. -- `is_dynamicall_added`: whether or not the item is dynamicall added. +- `is_dynamically_added`: whether or not the item is dynamically added. #### unregister @@ -213,6 +327,15 @@ Fetch all the components by a given type.. - `component_type`: a component type :return the list of registered components of a given type. + +#### ids + +```python + | ids() -> Set[ComponentId] +``` + +Get the item ids. + #### setup @@ -253,11 +376,15 @@ This class implements a generic registry for skill components. #### `__`init`__` ```python - | __init__() -> None + | __init__(**kwargs) -> None ``` Instantiate the registry. +**Arguments**: + +- `kwargs`: kwargs + **Returns**: None @@ -275,7 +402,7 @@ Register a item. - `item_id`: a pair (skill id, item name). - `item`: the item to register. -- `is_dynamicall_added`: whether or not the item is dynamicall added. +- `is_dynamically_added`: whether or not the item is dynamically added. **Returns**: @@ -321,7 +448,7 @@ the Item #### fetch`_`by`_`skill ```python - | fetch_by_skill(skill_id: SkillId) -> List[Item] + | fetch_by_skill(skill_id: SkillId) -> List[SkillComponentType] ``` Fetch all the items of a given skill. @@ -344,6 +471,15 @@ Fetch all the items. Unregister all the components by skill. + +#### ids + +```python + | ids() -> Set[Tuple[SkillId, str]] +``` + +Get the item ids. + #### setup @@ -383,11 +519,15 @@ This class implements the handlers registry. #### `__`init`__` ```python - | __init__() -> None + | __init__(**kwargs) -> None ``` Instantiate the registry. +**Arguments**: + +- `kwargs`: kwargs + **Returns**: None @@ -405,7 +545,7 @@ Register a handler. - `item_id`: the item id. - `item`: the handler. -- `is_dynamicall_added`: whether or not the item is dynamicall added. +- `is_dynamically_added`: whether or not the item is dynamically added. **Returns**: diff --git a/docs/api/registries/filter.md b/docs/api/registries/filter.md index 859c5646d3..dee47ece22 100644 --- a/docs/api/registries/filter.md +++ b/docs/api/registries/filter.md @@ -7,7 +7,7 @@ This module contains registries. ## Filter Objects ```python -class Filter() +class Filter(WithLogger) ``` This class implements the filter of an AEA. diff --git a/docs/api/registries/resources.md b/docs/api/registries/resources.md index 45b48633fc..50b5cb0759 100644 --- a/docs/api/registries/resources.md +++ b/docs/api/registries/resources.md @@ -16,13 +16,23 @@ This class implements the object that holds the resources of an AEA. #### `__`init`__` ```python - | __init__() -> None + | __init__(agent_name: str = "standalone") -> None ``` Instantiate the resources. :return None + +#### agent`_`name + +```python + | @property + | agent_name() -> str +``` + +Get the agent name. + #### component`_`registry diff --git a/docs/api/runtime.md b/docs/api/runtime.md index 64d57ce31a..a2443364e6 100644 --- a/docs/api/runtime.md +++ b/docs/api/runtime.md @@ -3,6 +3,35 @@ This module contains the implementation of runtime for economic agent (AEA). + +## `_`StopRuntime Objects + +```python +class _StopRuntime(Exception) +``` + +Exception to stop runtime. + +For internal usage only! +Used to perform asyncio call from sync callbacks. + + +#### `__`init`__` + +```python + | __init__(reraise: Optional[Exception] = None) +``` + +Init _StopRuntime exception. + +**Arguments**: + +- `reraise`: exception to reraise. + +**Returns**: + +None + ## RuntimeStates Objects @@ -16,7 +45,7 @@ Runtime states. ## BaseRuntime Objects ```python -class BaseRuntime(ABC) +class BaseRuntime(Runnable, WithLogger) ``` Abstract runtime class to create implementations. @@ -25,7 +54,7 @@ Abstract runtime class to create implementations. #### `__`init`__` ```python - | __init__(agent: AbstractAgent, loop_mode: Optional[str] = None, loop: Optional[AbstractEventLoop] = None) -> None + | __init__(agent: AbstractAgent, loop_mode: Optional[str] = None, loop: Optional[AbstractEventLoop] = None, threaded: bool = False) -> None ``` Init runtime. @@ -74,7 +103,7 @@ Get the task manager. ```python | @property - | loop() -> AbstractEventLoop + | loop() -> Optional[AbstractEventLoop] ``` Get event loop. @@ -84,7 +113,7 @@ Get event loop. ```python | @property - | multiplexer() -> Multiplexer + | multiplexer() -> AsyncMultiplexer ``` Get multiplexer. @@ -108,24 +137,6 @@ Return decision maker if set. Set decision maker with handler provided. - -#### start - -```python - | start() -> None -``` - -Start agent using runtime. - - -#### stop - -```python - | stop() -> None -``` - -Stop agent and runtime. - #### is`_`running @@ -186,7 +197,7 @@ Asynchronous runtime: uses asyncio loop for multiplexer and async agent main loo #### `__`init`__` ```python - | __init__(agent: AbstractAgent, loop_mode: Optional[str] = None, loop: Optional[AbstractEventLoop] = None) -> None + | __init__(agent: AbstractAgent, loop_mode: Optional[str] = None, loop: Optional[AbstractEventLoop] = None, threaded=False) -> None ``` Init runtime. @@ -214,6 +225,30 @@ Set event loop to be used. - `loop`: event loop to use. + +#### run + +```python + | async run() -> None +``` + +Start runtime task. + +Starts multiplexer and agent loop. + + +#### stop`_`runtime + +```python + | async stop_runtime() -> None +``` + +Stop runtime coroutine. + +Stop main loop. +Tear down the agent.. +Disconnect multiplexer. + #### run`_`runtime @@ -227,7 +262,7 @@ Run agent and starts multiplexer. ## ThreadedRuntime Objects ```python -class ThreadedRuntime(BaseRuntime) +class ThreadedRuntime(AsyncRuntime) ``` Run agent and multiplexer in different threads with own asyncio loops. diff --git a/docs/api/test_tools/generic.md b/docs/api/test_tools/generic.md index 25e521cfc1..83f1f083db 100644 --- a/docs/api/test_tools/generic.md +++ b/docs/api/test_tools/generic.md @@ -36,14 +36,14 @@ Read an envelope from a file. envelope - -#### force`_`set`_`config + +#### nested`_`set`_`config ```python -force_set_config(dotted_path: str, value: Any) -> None +nested_set_config(dotted_path: str, value: Any, author: str = DEFAULT_AUTHOR) -> None ``` -Set an AEA config without validation. +Set an AEA config with nested values. Run from agent's directory. @@ -59,6 +59,7 @@ Allowed dotted_path: - `dotted_path`: dotted path to a setting. - `value`: a value to assign. Must be of yaml serializable type. +- `author`: the author name, used to parse the dotted path. **Returns**: diff --git a/docs/api/helpers/test_cases.md b/docs/api/test_tools/test_cases.md similarity index 96% rename from docs/api/helpers/test_cases.md rename to docs/api/test_tools/test_cases.md index 3fe8546cd7..352853dcf9 100644 --- a/docs/api/helpers/test_cases.md +++ b/docs/api/test_tools/test_cases.md @@ -54,12 +54,12 @@ Run from agent's directory. Result - -#### force`_`set`_`config + +#### nested`_`set`_`config ```python | @classmethod - | force_set_config(cls, dotted_path: str, value: Any) -> None + | nested_set_config(cls, dotted_path: str, value: Any) -> None ``` Force set config. @@ -145,7 +145,7 @@ None. ```python | @classmethod - | create_agents(cls, *agents_names: str) -> None + | create_agents(cls, *agents_names: str, *, is_local: bool = True, is_empty: bool = False) -> None ``` Create agents in current working directory. @@ -153,6 +153,8 @@ Create agents in current working directory. **Arguments**: - `agents_names`: str agent names. +- `is_local`: a flag for local folder add True by default. +- `empty`: optional boolean flag for skip adding default dependencies. **Returns**: @@ -163,7 +165,7 @@ None ```python | @classmethod - | fetch_agent(cls, public_id: str, agent_name: str) -> None + | fetch_agent(cls, public_id: str, agent_name: str, is_local: bool = True) -> None ``` Create agents in current working directory. @@ -172,6 +174,7 @@ Create agents in current working directory. - `public_id`: str public id - `agents_name`: str agent name. +- `is_local`: a flag for local folder add True by default. **Returns**: diff --git a/docs/api/test_tools/test_skill.md b/docs/api/test_tools/test_skill.md new file mode 100644 index 0000000000..313a4a32bc --- /dev/null +++ b/docs/api/test_tools/test_skill.md @@ -0,0 +1,192 @@ + +# aea.test`_`tools.test`_`skill + +This module contains test case classes based on pytest for AEA skill testing. + + +## BaseSkillTestCase Objects + +```python +class BaseSkillTestCase() +``` + +A class to test a skill. + + +#### skill + +```python + | @property + | skill() -> Skill +``` + +Get the skill. + + +#### get`_`quantity`_`in`_`outbox + +```python + | get_quantity_in_outbox() -> int +``` + +Get the quantity of envelopes in the outbox. + + +#### get`_`message`_`from`_`outbox + +```python + | get_message_from_outbox() -> Optional[Message] +``` + +Get message from outbox. + + +#### get`_`quantity`_`in`_`decision`_`maker`_`inbox + +```python + | get_quantity_in_decision_maker_inbox() -> int +``` + +Get the quantity of messages in the decision maker inbox. + + +#### get`_`message`_`from`_`decision`_`maker`_`inbox + +```python + | get_message_from_decision_maker_inbox() -> Optional[Message] +``` + +Get message from decision maker inbox. + + +#### assert`_`quantity`_`in`_`outbox + +```python + | assert_quantity_in_outbox(expected_quantity) -> None +``` + +Assert the quantity of messages in the outbox. + + +#### assert`_`quantity`_`in`_`decision`_`making`_`queue + +```python + | assert_quantity_in_decision_making_queue(expected_quantity) -> None +``` + +Assert the quantity of messages in the decision maker queue. + + +#### message`_`has`_`attributes + +```python + | @staticmethod + | message_has_attributes(actual_message: Message, message_type: Type[Message], **kwargs, ,) -> Tuple[bool, str] +``` + +Evaluates whether a message's attributes match the expected attributes provided. + +**Arguments**: + +- `actual_message`: the actual message +- `message_type`: the expected message type +- `kwargs`: other expected message attributes + +**Returns**: + +boolean result of the evaluation and accompanied message + + +#### build`_`incoming`_`message + +```python + | build_incoming_message(message_type: Type[Message], performative: Message.Performative, dialogue_reference: Optional[Tuple[str, str]] = None, message_id: Optional[int] = None, target: Optional[int] = None, to: Optional[Address] = None, sender: Address = COUNTERPARTY_NAME, **kwargs, ,) -> Message +``` + +Quickly create an incoming message with the provided attributes. + +For any attribute not provided, the corresponding default value in message is used. + +**Arguments**: + +- `message_type`: the type of the message +- `dialogue_reference`: the dialogue_reference +- `message_id`: the message_id +- `target`: the target +- `performative`: the performative +- `to`: the 'to' address +- `sender`: the 'sender' address +- `kwargs`: other attributes + +**Returns**: + +the created incoming message + + +#### build`_`incoming`_`message`_`for`_`skill`_`dialogue + +```python + | build_incoming_message_for_skill_dialogue(dialogue: Dialogue, performative: Message.Performative, message_type: Optional[Type[Message]] = None, dialogue_reference: Optional[Tuple[str, str]] = None, message_id: Optional[int] = None, target: Optional[int] = None, to: Optional[Address] = None, sender: Optional[Address] = None, **kwargs, ,) -> Message +``` + +Quickly create an incoming message with the provided attributes for a dialogue. + +For any attribute not provided, a value based on the dialogue is used. +These values are shown in parantheses in the list of parameters below. + +NOTE: This method must be used with care. The dialogue provided is part of the skill +which is being tested. Because for any unspecified attribute, a "correct" value is used, +the test will be, by design, insured to pass on these values. + +**Arguments**: + +- `dialogue`: the dialogue to which the incoming message is intended +- `performative`: the performative of the message +- `message_type`: (the message_class of the provided dialogue) the type of the message +- `dialogue_reference`: (the dialogue_reference of the provided dialogue) the dialogue reference of the message +- `message_id`: (the id of the last message in the provided dialogue + 1) the id of the message +- `target`: (the id of the last message in the provided dialogue) the target of the message +- `to`: (the agent address associated with this skill) the receiver of the message +- `sender`: (the counterperty in the provided dialogue) the sender of the message +- `kwargs`: other attributes + +**Returns**: + +the created incoming message + + +#### prepare`_`skill`_`dialogue + +```python + | prepare_skill_dialogue(dialogues: Dialogues, messages: Tuple[DialogueMessage, ...], counterparty: Address = COUNTERPARTY_NAME) -> Dialogue +``` + +Quickly create a dialogue. + +The 'messages' argument is a tuple of DialogueMessages. +For every DialogueMessage (performative, contents, is_incoming, target): +- if 'is_incoming' is not provided: for the first message it is assumed False (outgoing), +for any other message, it is the opposite of the one preceding it. +- if 'target' is not provided: for the first message it is assumed 0, +for any other message, it is the index of the message before it in the tuple of messages + 1. + +**Arguments**: + +- `dialogues`: a dialogues class +- `counterparty`: the message_id +- `messages`: the dialogue_reference + +**Returns**: + +the created incoming message + + +#### setup + +```python + | @classmethod + | setup(cls) -> None +``` + +Set up the skill test case. + diff --git a/docs/aries-cloud-agent-demo.md b/docs/aries-cloud-agent-demo.md index acc6c3e901..cc60d2788b 100644 --- a/docs/aries-cloud-agent-demo.md +++ b/docs/aries-cloud-agent-demo.md @@ -180,7 +180,7 @@ 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.11.0 +aea fetch fetchai/aries_alice:0.12.0 cd aries_alice ``` @@ -191,11 +191,11 @@ The following steps create **Alice_AEA** from scratch: ``` bash aea create aries_alice cd aries_alice -aea add connection fetchai/p2p_libp2p:0.10.0 -aea add connection fetchai/soef:0.8.0 -aea add connection fetchai/http_client:0.8.0 -aea add connection fetchai/webhook:0.6.0 -aea add skill fetchai/aries_alice:0.7.0 +aea add connection fetchai/p2p_libp2p:0.11.0 +aea add connection fetchai/soef:0.10.0 +aea add connection fetchai/http_client:0.10.0 +aea add connection fetchai/webhook:0.8.0 +aea add skill fetchai/aries_alice:0.9.0 ```

    @@ -265,7 +265,7 @@ Once you see a message of the form `My libp2p addresses: ['SOME_ADDRESS']` take In the fourth terminal, fetch **Faber_AEA** and move into its project folder: ``` bash -aea fetch fetchai/aries_faber:0.11.0 +aea fetch fetchai/aries_faber:0.12.0 cd aries_faber ``` @@ -276,11 +276,11 @@ The following steps create **Faber_AEA** from scratch: ``` bash aea create aries_faber cd aries_faber -aea add connection fetchai/p2p_libp2p:0.10.0 -aea add connection fetchai/soef:0.8.0 -aea add connection fetchai/http_client:0.8.0 -aea add connection fetchai/webhook:0.6.0 -aea add skill fetchai/aries_faber:0.6.0 +aea add connection fetchai/p2p_libp2p:0.11.0 +aea add connection fetchai/soef:0.10.0 +aea add connection fetchai/http_client:0.10.0 +aea add connection fetchai/webhook:0.8.0 +aea add skill fetchai/aries_faber:0.8.0 ```

    diff --git a/docs/assets/acn-tiers.png b/docs/assets/acn-tiers.png new file mode 100644 index 0000000000000000000000000000000000000000..826f88c357677a97ddd68deddfe4a366b6010186 GIT binary patch literal 42233 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 XRzZ}Xsn1nlj9N}g=|S;5lV|@Aj|&X^ literal 0 HcmV?d00001 diff --git a/docs/assets/acn-trust-security.png b/docs/assets/acn-trust-security.png new file mode 100644 index 0000000000000000000000000000000000000000..33673dc2c884e14cd0a31cf4e11f1cd76d2b4a6a GIT binary patch literal 48871 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≫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 literal 0 HcmV?d00001 diff --git a/docs/build-aea-programmatically.md b/docs/build-aea-programmatically.md index 7d6ddccdfc..43dc038060 100644 --- a/docs/build-aea-programmatically.md +++ b/docs/build-aea-programmatically.md @@ -48,7 +48,7 @@ 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:0.5.0` protocol, the `fetchai/stub:0.9.0` connection and the `fetchai/error:0.5.0` skill. +We use the `AEABuilder` to readily build an AEA. By default, the `AEABuilder` adds the `fetchai/default:0.7.0` protocol, the `fetchai/stub:0.11.0` connection and the `fetchai/error:0.7.0` skill. ``` python # Instantiate the builder and build the AEA # By default, the default protocol, error skill and stub connection are added @@ -121,7 +121,7 @@ We run the AEA from a different thread so that we can still use the main thread 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:0.5.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," + message_text = b"my_aea,other_agent,fetchai/default:0.7.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) @@ -147,8 +147,8 @@ 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:0.5.0,\x08\x01*\x07\n\x05hello - output message: other_agent,my_aea,fetchai/default:0.5.0,...\x05hello + input message: my_aea,other_agent,fetchai/default:0.7.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello, + output message: other_agent,my_aea,fetchai/default:0.7.0,...\x05hello ## Entire code listing @@ -239,7 +239,7 @@ def run(): 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:0.5.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," + message_text = b"my_aea,other_agent,fetchai/default:0.7.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) diff --git a/docs/car-park-skills.md b/docs/car-park-skills.md index 922097bfc9..c18432465f 100644 --- a/docs/car-park-skills.md +++ b/docs/car-park-skills.md @@ -55,7 +55,7 @@ Follow the Preliminaries and @@ -89,7 +89,7 @@ default_routing: Then, fetch the car data client AEA: ``` bash -aea fetch fetchai/car_data_buyer:0.13.0 +aea fetch fetchai/car_data_buyer:0.14.0 cd car_data_buyer aea install ``` @@ -101,19 +101,19 @@ 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.10.0 -aea add connection fetchai/soef:0.8.0 -aea add connection fetchai/ledger:0.6.0 -aea add skill fetchai/carpark_client:0.12.0 +aea add connection fetchai/p2p_libp2p:0.11.0 +aea add connection fetchai/soef:0.10.0 +aea add connection fetchai/ledger:0.7.0 +aea add skill fetchai/carpark_client:0.13.0 aea install -aea config set agent.default_connection fetchai/p2p_libp2p:0.10.0 +aea config set agent.default_connection fetchai/p2p_libp2p:0.11.0 ``` In `car_data_buyer/aea-config.yaml` add ``` yaml default_routing: - fetchai/ledger_api:0.3.0: fetchai/ledger:0.6.0 - fetchai/oef_search:0.6.0: fetchai/soef:0.8.0 + fetchai/ledger_api:0.5.0: fetchai/ledger:0.7.0 + fetchai/oef_search:0.8.0: fetchai/soef:0.10.0 ```

    diff --git a/docs/cli-gui.md b/docs/cli-gui.md index 7d554b8ff8..6a60ce3c94 100644 --- a/docs/cli-gui.md +++ b/docs/cli-gui.md @@ -14,7 +14,8 @@ pip install aea[cli_gui] ## Starting the GUI -Go to the directory in which you will create new AEAs. If you followed the quick start guide, this will be `my_aea`. + +Go to the directory in which you will create new AEAs. If you followed the quick start guide, this will be `my_aea`. It is important to start the GUI not from within an agent project but its parent directory instead. Start the local web-server. ``` bash diff --git a/docs/cli-vs-programmatic-aeas.md b/docs/cli-vs-programmatic-aeas.md index 6fae1bc689..55c8eddecb 100644 --- a/docs/cli-vs-programmatic-aeas.md +++ b/docs/cli-vs-programmatic-aeas.md @@ -28,7 +28,7 @@ If you want to create the weather station AEA step by step you can follow this g Fetch the weather station AEA with the following command : ``` bash -aea fetch fetchai/weather_station:0.13.0 +aea fetch fetchai/weather_station:0.14.0 cd weather_station ``` @@ -124,8 +124,8 @@ def run(): # specify the default routing for some protocols default_routing = { - PublicId.from_str("fetchai/ledger_api:0.3.0"): LedgerConnection.connection_id, - PublicId.from_str("fetchai/oef_search:0.6.0"): SOEFConnection.connection_id, + PublicId.from_str("fetchai/ledger_api:0.5.0"): LedgerConnection.connection_id, + PublicId.from_str("fetchai/oef_search:0.8.0"): SOEFConnection.connection_id, } default_connection = P2PLibp2pConnection.connection_id @@ -192,7 +192,7 @@ def run(): api_key=API_KEY, soef_addr=SOEF_ADDR, soef_port=SOEF_PORT, - restricted_to_protocols={PublicId.from_str("fetchai/oef_search:0.6.0")}, + restricted_to_protocols={PublicId.from_str("fetchai/oef_search:0.8.0")}, connection_id=SOEFConnection.connection_id, ) soef_connection = SOEFConnection(configuration=configuration, identity=identity) diff --git a/docs/config.md b/docs/config.md index e95ddab7d8..65dabf54d7 100644 --- a/docs/config.md +++ b/docs/config.md @@ -10,7 +10,7 @@ PUBLIC_ID_REGEX: "^[a-zA-Z0-9_]*/[a-zA-Z_][a-zA-Z0-9_]*:(0|[1-9]\\d*)\\.(0|[1-9] LEDGER_ID_REGEX: "^[^\\d\\W]\\w*\\Z" ``` -The `aea-config.yaml` defines the AEA project. The compulsary components are listed below: +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 +21,13 @@ aea_version: '>=0.6.0, <0.7.0' # AEA framework version(s) compa 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.9.0 +- fetchai/stub:0.11.0 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:0.5.0 +- fetchai/default:0.7.0 skills: # The list of skill public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX). -- fetchai/error:0.5.0 -default_connection: fetchai/p2p_libp2p:0.10.0 # The default connection used for envelopes sent by the AEA (must satisfy PUBLIC_ID_REGEX). +- fetchai/error:0.7.0 +default_connection: fetchai/p2p_libp2p:0.11.0 # 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) logging_config: # The logging configurations the AEA project uses disable_existing_loggers: false diff --git a/docs/connect-a-frontend.md b/docs/connect-a-frontend.md index 93d5b1a49b..cc21116dc2 100644 --- a/docs/connect-a-frontend.md +++ b/docs/connect-a-frontend.md @@ -3,7 +3,7 @@ This demo discusses the options we have to connect a front-end to the AEA. The f How to connect frontend to your AEA ## Case 1 -The first option we have is to create a `Connection` that will handle the incoming requests from the 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.8.0`) which translates these into Envelopes to be consumed by the correct skill. +The first option we have is to create a `Connection` that will handle the incoming requests from the 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.10.0`) which translates these into Envelopes to be consumed by the correct skill. ## Case 2 -The other option we have is to create a stand-alone `Multiplexer` with a `P2P` connection (`fetchai/p2p_libp2p:0.10.0`). In this scenario, the front-end needs to incorporate a Multiplexer with an `P2P` Connection. Then the
    Agent Communication Network can be used to send Envelopes from the AEA to the front-end. \ No newline at end of file +The other option we have is to create a stand-alone `Multiplexer` with a `P2P` connection (`fetchai/p2p_libp2p:0.11.0`). In this scenario, the front-end needs to incorporate a Multiplexer with an `P2P` Connection. Then the Agent Communication Network can be used to send Envelopes from the AEA to the front-end. \ No newline at end of file diff --git a/docs/contract.md b/docs/contract.md index 48ef8864e9..3bc608de6e 100644 --- a/docs/contract.md +++ b/docs/contract.md @@ -1,4 +1,4 @@ -`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:0.5.0` protocol) and the implementation specifics of the ABI. +`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:0.6.0` protocol) and the implementation specifics of the ABI. Contracts usually implement four types of methods: @@ -16,32 +16,32 @@ The smart contract wrapped in a AEA contract package might be a third-party smar Interacting with contracts in almost all cases requires network access. Therefore, the framework executes contract related logic in a Connection. -In particular, the `fetchai/ledger:0.6.0` connection can be used to execute contract related logic. The skills communicate with the `fetchai/ledger:0.6.0` connection via the `fetchai/contract_api:0.5.0` protocol. This protocol implements a request-response pattern to serve the four types of methods listed above: +In particular, the `fetchai/ledger:0.7.0` connection can be used to execute contract related logic. The skills communicate with the `fetchai/ledger:0.7.0` connection via the `fetchai/contract_api:0.6.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.10.0` package, we send the following message to the `fetchai/ledger:0.6.0`: +- 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.11.0` package, we send the following message to the `fetchai/ledger:0.7.0`: ``` 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.10.0", + contract_id="fetchai/erc1155:0.11.0", callable="get_deploy_transaction", kwargs=ContractApiMessage.Kwargs( {"deployer_address": self.context.agent_address} ), ) ``` -This message will be handled by the `fetchai/ledger:0.6.0` 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.6.0` connection using the `fetchai/ledger_api:0.3.0` protocol. +This message will be handled by the `fetchai/ledger:0.7.0` 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.7.0` connection using the `fetchai/ledger_api:0.5.0` protocol. -- 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.10.0` package, we send the following message to the `fetchai/ledger:0.6.0`: +- 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.11.0` package, we send the following message to the `fetchai/ledger:0.7.0`: ``` 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.10.0", + contract_id="fetchai/erc1155:0.11.0", contract_address=strategy.contract_address, callable="get_create_batch_transaction", kwargs=ContractApiMessage.Kwargs( @@ -52,16 +52,16 @@ contract_api_msg = ContractApiMessage( ), ) ``` -This message will be handled by the `fetchai/ledger:0.6.0` 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.10.0` contract package needs to implement the `get_create_batch_transaction` method with the specified key word arguments. 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.6.0` connection using the `fetchai/ledger_api:0.3.0` protocol. +This message will be handled by the `fetchai/ledger:0.7.0` 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.11.0` contract package needs to implement the `get_create_batch_transaction` method with the specified key word arguments. 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.7.0` connection using the `fetchai/ledger_api:0.5.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.10.0` package, we send the following message to the `fetchai/ledger:0.6.0`: +- 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.11.0` package, we send the following message to the `fetchai/ledger:0.7.0`: ``` 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.10.0", + contract_id="fetchai/erc1155:0.11.0", contract_address=strategy.contract_address, callable="get_hash_single", kwargs=ContractApiMessage.Kwargs( @@ -77,17 +77,17 @@ contract_api_msg = ContractApiMessage( ), ) ``` -This message will be handled by the `fetchai/ledger:0.6.0` 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.10.0` 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.6.0` connection using the `fetchai/ledger_api:0.3.0` protocol. In this case, signing is not required. +This message will be handled by the `fetchai/ledger:0.7.0` 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.11.0` 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.7.0` connection using the `fetchai/ledger_api:0.5.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.10.0` package, we send the following message to the `fetchai/ledger:0.6.0`: +- 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.11.0` package, we send the following message to the `fetchai/ledger:0.7.0`: ``` 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.10.0", + contract_id="fetchai/erc1155:0.11.0", contract_address=strategy.contract_address, callable="get_balance", kwargs=ContractApiMessage.Kwargs( @@ -95,7 +95,7 @@ contract_api_msg = ContractApiMessage( ), ) ``` -This message will be handled by the `fetchai/ledger:0.6.0` connection and then a `state` message will be returned with the matching state. For this to be executed correctly, the `fetchai/erc1155:0.10.0` 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.6.0` connection using the `fetchai/ledger_api:0.3.0` protocol. In this case, signing is not required. +This message will be handled by the `fetchai/ledger:0.7.0` connection and then a `state` message will be returned with the matching state. For this to be executed correctly, the `fetchai/erc1155:0.11.0` 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.7.0` connection using the `fetchai/ledger_api:0.5.0` protocol. In this case, signing is not required. ## Developing your own @@ -168,6 +168,6 @@ 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.6.0` connection once it receives a message (see bullet point 2 above). The method first gets the latest transaction nonce of the `deployer_address`, then constracts the contract instance, then uses the instance to build the transaction and finally updates the gas on the transaction. +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.7.0` connection once it receives a message (see bullet point 2 above). The method first gets the latest transaction nonce of the `deployer_address`, then constracts 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.10.0`, and skills using them, like `fetchai/erc1155_client:0.11.0` and `fetchai/erc1155_deploy:0.14.0`, for inspiration and guidance. \ No newline at end of file +It helps to look at existing contract packages, like `fetchai/erc1155:0.11.0`, and skills using them, like `fetchai/erc1155_client:0.11.0` and `fetchai/erc1155_deploy:0.15.0`, for inspiration and guidance. \ No newline at end of file diff --git a/docs/core-components-1.md b/docs/core-components-1.md index b0aa84b8df..7a6e26268a 100644 --- a/docs/core-components-1.md +++ b/docs/core-components-1.md @@ -32,7 +32,7 @@ An `Envelope` is the core object * `Dialogues`, which define rules over `Message` sequences. -The framework provides one default `Protocol`, called `default` (current version `fetchai/default:0.5.0`). 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:0.7.0`). This `Protocol` provides a bare-bones implementation for an AEA `Protocol` which includes a `DefaultMessage` class and associated `DefaultSerializer` and `DefaultDialogue` classes. Additional `Protocols` - i.e. a new type of interaction - can be added as packages and generated with the protocol generator. For more details on `Protocols` also read the `Protocol` guide here. @@ -42,7 +42,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 network, ledgers and 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.9.0`). 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.11.0`). 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` also read the `Connection` guide here. diff --git a/docs/debug.md b/docs/debug.md new file mode 100644 index 0000000000..9d0df2c80d --- /dev/null +++ b/docs/debug.md @@ -0,0 +1,17 @@ +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 + +You can add a debugger anywhere in your code: + +``` python +import pdb; pdb.set_trace() +``` + +Then simply run you aea with the `--skip-consistency-check` mode: + +``` bash +aea -s run +``` + +For more guidance on how to use `pdb` check out the documentation. diff --git a/docs/deployment.md b/docs/deployment.md index 92f8c93ab3..23737b3370 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -28,7 +28,7 @@ Finally, we run it: docker run -it aea-deploy:latest ``` -This will run the `fetchai/my_first_aea:0.11.0` demo project. You can edit `entrypoint.sh` to run whatever project you would like. +This will run the `fetchai/my_first_aea:0.13.0` demo project. You can edit `entrypoint.sh` to run whatever project you would like. ## Deployment diff --git a/docs/erc1155-skills.md b/docs/erc1155-skills.md index 6b197156c4..78ab31ec31 100644 --- a/docs/erc1155-skills.md +++ b/docs/erc1155-skills.md @@ -26,7 +26,7 @@ with a one-step atomic swap functionality. That means the trade between the two Fetch the AEA that will deploy the contract. ``` bash -aea fetch fetchai/erc1155_deployer:0.14.0 +aea fetch fetchai/erc1155_deployer:0.15.0 cd erc1155_deployer aea install ``` @@ -39,20 +39,20 @@ Create the AEA that will deploy the contract. ``` bash aea create erc1155_deployer cd erc1155_deployer -aea add connection fetchai/p2p_libp2p:0.10.0 -aea add connection fetchai/soef:0.8.0 -aea add connection fetchai/ledger:0.6.0 -aea add skill fetchai/erc1155_deploy:0.14.0 +aea add connection fetchai/p2p_libp2p:0.11.0 +aea add connection fetchai/soef:0.10.0 +aea add connection fetchai/ledger:0.7.0 +aea add skill fetchai/erc1155_deploy:0.15.0 aea install -aea config set agent.default_connection fetchai/p2p_libp2p:0.10.0 +aea config set agent.default_connection fetchai/p2p_libp2p:0.11.0 ``` Then update the agent config (`aea-config.yaml`) with the default routing: ``` yaml default_routing: - fetchai/contract_api:0.5.0: fetchai/ledger:0.6.0 - fetchai/ledger_api:0.3.0: fetchai/ledger:0.6.0 - fetchai/oef_search:0.6.0: fetchai/soef:0.8.0 + fetchai/contract_api:0.6.0: fetchai/ledger:0.7.0 + fetchai/ledger_api:0.5.0: fetchai/ledger:0.7.0 + fetchai/oef_search:0.8.0: fetchai/soef:0.10.0 ``` And change the default ledger: @@ -81,7 +81,7 @@ aea add-key cosmos cosmos_private_key.txt --connection In another terminal, fetch the AEA that will get some tokens from the deployer. ``` bash -aea fetch fetchai/erc1155_client:0.14.0 +aea fetch fetchai/erc1155_client:0.15.0 cd erc1155_client aea install ``` @@ -94,20 +94,20 @@ 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.10.0 -aea add connection fetchai/soef:0.8.0 -aea add connection fetchai/ledger:0.6.0 -aea add skill fetchai/erc1155_client:0.13.0 +aea add connection fetchai/p2p_libp2p:0.11.0 +aea add connection fetchai/soef:0.10.0 +aea add connection fetchai/ledger:0.7.0 +aea add skill fetchai/erc1155_client:0.14.0 aea install -aea config set agent.default_connection fetchai/p2p_libp2p:0.10.0 +aea config set agent.default_connection fetchai/p2p_libp2p:0.11.0 ``` Then update the agent config (`aea-config.yaml`) with the default routing: ``` yaml default_routing: - fetchai/contract_api:0.5.0: fetchai/ledger:0.6.0 - fetchai/ledger_api:0.3.0: fetchai/ledger:0.6.0 - fetchai/oef_search:0.6.0: fetchai/soef:0.8.0 + fetchai/contract_api:0.6.0: fetchai/ledger:0.7.0 + fetchai/ledger_api:0.5.0: fetchai/ledger:0.7.0 + fetchai/oef_search:0.8.0: fetchai/soef:0.10.0 ``` And change the default ledger: @@ -178,7 +178,7 @@ At some point you should see the log output: registering service on SOEF. ``` -Then, update the configuration of the buyer AEA's p2p connection (in `vendor/fetchai/connections/p2p_libp2p/connection.yaml`) replace the following: +Then, update the configuration of the client AEA's p2p connection (in `vendor/fetchai/connections/p2p_libp2p/connection.yaml`) replace the following: ``` yaml config: diff --git a/docs/generic-skills-step-by-step.md b/docs/generic-skills-step-by-step.md index c71c402ba4..65d2862edb 100644 --- a/docs/generic-skills-step-by-step.md +++ b/docs/generic-skills-step-by-step.md @@ -41,16 +41,16 @@ Follow the Preliminaries and Preliminaries and @@ -93,7 +93,7 @@ default_routing: Then, fetch the buyer AEA: ``` bash -aea fetch fetchai/generic_buyer:0.10.0 --alias my_buyer_aea +aea fetch fetchai/generic_buyer:0.11.0 --alias my_buyer_aea cd my_buyer_aea aea install ``` @@ -105,19 +105,19 @@ 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.10.0 -aea add connection fetchai/soef:0.8.0 -aea add connection fetchai/ledger:0.6.0 -aea add skill fetchai/generic_buyer:0.12.0 +aea add connection fetchai/p2p_libp2p:0.11.0 +aea add connection fetchai/soef:0.10.0 +aea add connection fetchai/ledger:0.7.0 +aea add skill fetchai/generic_buyer:0.13.0 aea install -aea config set agent.default_connection fetchai/p2p_libp2p:0.10.0 +aea config set agent.default_connection fetchai/p2p_libp2p:0.11.0 ``` In `my_buyer_aea/aea-config.yaml` add ``` yaml default_routing: - fetchai/ledger_api:0.3.0: fetchai/ledger:0.6.0 - fetchai/oef_search:0.6.0: fetchai/soef:0.8.0 + fetchai/ledger_api:0.5.0: fetchai/ledger:0.7.0 + fetchai/oef_search:0.8.0: fetchai/soef:0.10.0 ```

    diff --git a/docs/gym-skill.md b/docs/gym-skill.md index fe54a9dfee..b171dcc511 100644 --- a/docs/gym-skill.md +++ b/docs/gym-skill.md @@ -19,7 +19,7 @@ Follow the
    Preliminaries and Open Economic Framework (OEF) - a decentralized communication and search & discovery system for agents - and using Fetch.ai's blockchain as a financial settlement and commitment layer. Third-party blockchains, such as Ethereum, may also allow AEA integration. + + +## Why build with the AEA Framework? + +The AEA framework provides the developer with a number of features which cannot be found in this combination anywhere else: + +* the peer-to-peer agent communication network allows your AEAs to interact with all other AEAs over the public internet +* the search and discovery system sOEF allows your AEAs find other agents +* the AEA registry enables code sharing and re-use +* the framework's crypto and ledger APIs make it possible for AEAs to interact with blockchains +* reusability of code for interacting with blockchains is enabled via the contract packages + ## Next steps @@ -36,7 +50,7 @@ To learn more about some of the distinctive characteristics of agent-oriented de If you would like to develop an AEA in a language different to Python then check out our language agnostic AEA definition. -AEAs achieve their goals with the help of the Open Economic Framework (OEF) - a decentralized communication and search & discovery system for agents - and using Fetch.ai's blockchain as a financial settlement and commitment layer. Third-party blockchains, such as Ethereum, may also allow AEA integration. +If you would run a demo, check out the demo guides. ## Help us improve diff --git a/docs/language-agnostic-definition.md b/docs/language-agnostic-definition.md index a9fb0fea81..59b44bda84 100644 --- a/docs/language-agnostic-definition.md +++ b/docs/language-agnostic-definition.md @@ -49,7 +49,7 @@ The format for the above fields, except `message`, is specified below. For those

    This section is incomplete, and will be updated soon!

  • -
  • It SHOULD implement the `fetchai/default:0.5.0` protocol which satisfies the following protobuf schema: +
  • It SHOULD implement the `fetchai/default:0.7.0` protocol which satisfies the following protobuf schema: ``` proto syntax = "proto3"; @@ -94,7 +94,7 @@ message DefaultMessage{
  • 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 eliptic curve must be of type SECP256k1).
  • -
  • It SHOULD implement handling of errors using the `fetchai/default:0.5.0` protocol. The protobuf schema is given above. +
  • It SHOULD implement handling of errors using the `fetchai/default:0.7.0` protocol. The protobuf schema is given above.
  • It MUST implement the following principles when handling messages: