aries_cloudagent.core package
Subpackages
Submodules
aries_cloudagent.core.conductor module
aries_cloudagent.core.dispatcher module
The Dispatcher.
The dispatcher is responsible for coordinating data flow between handlers, providing lifecycle hook callbacks storing state for message threads, etc.
- class aries_cloudagent.core.dispatcher.Dispatcher(profile: aries_cloudagent.core.profile.Profile)[source]
Bases:
object
Dispatcher class.
Class responsible for dispatching messages to message handlers and responding to other agents.
- async handle_message(profile: aries_cloudagent.core.profile.Profile, inbound_message: aries_cloudagent.transport.inbound.message.InboundMessage, send_outbound: Coroutine)[source]
Configure responder and message context and invoke the message handler.
- Parameters
profile – The profile associated with the inbound message
inbound_message – The inbound message instance
send_outbound – Async function to send outbound messages
# Raises: # MessageParseError: If the message type version is not supported
- Returns
The response from the handler
- log_task(task: aries_cloudagent.utils.task_queue.CompletedTask)[source]
Log a completed task using the stats collector.
- async make_message(profile: aries_cloudagent.core.profile.Profile, parsed_msg: dict) Tuple[aries_cloudagent.messaging.base_message.BaseMessage, Optional[str]] [source]
Deserialize a message dict into the appropriate message instance.
Given a dict describing a message, this method returns an instance of the related message class.
- Parameters
parsed_msg – The parsed message
profile – Profile
- Returns
An instance of the corresponding message class for this message
- Raises
MessageParseError – If the message doesn’t specify @type
MessageParseError – If there is no message class registered to handle
the given type –
- put_task(coro: Coroutine, complete: Optional[Callable] = None, ident: Optional[str] = None) aries_cloudagent.utils.task_queue.PendingTask [source]
Run a task in the task queue, potentially blocking other handlers.
- queue_message(profile: aries_cloudagent.core.profile.Profile, inbound_message: aries_cloudagent.transport.inbound.message.InboundMessage, send_outbound: Coroutine, complete: Optional[Callable] = None) aries_cloudagent.utils.task_queue.PendingTask [source]
Add a message to the processing queue for handling.
- Parameters
profile – The profile associated with the inbound message
inbound_message – The inbound message instance
send_outbound – Async function to send outbound messages
complete – Function to call when the handler has completed
- Returns
A pending task instance resolving to the handler task
- class aries_cloudagent.core.dispatcher.DispatcherResponder(context: aries_cloudagent.messaging.request_context.RequestContext, inbound_message: aries_cloudagent.transport.inbound.message.InboundMessage, send_outbound: Coroutine, **kwargs)[source]
Bases:
aries_cloudagent.messaging.responder.BaseResponder
Handle outgoing messages from message handlers.
- async create_outbound(message: Union[aries_cloudagent.messaging.agent_message.AgentMessage, aries_cloudagent.messaging.base_message.BaseMessage, str, bytes], **kwargs) aries_cloudagent.transport.outbound.message.OutboundMessage [source]
Create an OutboundMessage from a message body.
- Parameters
message – The message payload
- async send_outbound(message: aries_cloudagent.transport.outbound.message.OutboundMessage, **kwargs) aries_cloudagent.transport.outbound.status.OutboundSendStatus [source]
Send outbound message.
- Parameters
message – The OutboundMessage to be sent
- exception aries_cloudagent.core.dispatcher.ProblemReportParseError(*args, error_code: Optional[str] = None, **kwargs)[source]
Bases:
aries_cloudagent.messaging.error.MessageParseError
Error to raise on failure to parse problem-report message.
aries_cloudagent.core.error module
Common exception classes.
- exception aries_cloudagent.core.error.BaseError(*args, error_code: Optional[str] = None, **kwargs)[source]
Bases:
Exception
Generic exception class which other exceptions should inherit from.
- exception aries_cloudagent.core.error.ProfileDuplicateError(*args, error_code: Optional[str] = None, **kwargs)[source]
Bases:
aries_cloudagent.core.error.ProfileError
Profile with the given name already exists.
- exception aries_cloudagent.core.error.ProfileError(*args, error_code: Optional[str] = None, **kwargs)[source]
Bases:
aries_cloudagent.core.error.BaseError
Base error for profile operations.
- exception aries_cloudagent.core.error.ProfileNotFoundError(*args, error_code: Optional[str] = None, **kwargs)[source]
Bases:
aries_cloudagent.core.error.ProfileError
Requested profile was not found.
- exception aries_cloudagent.core.error.ProfileSessionInactiveError(*args, error_code: Optional[str] = None, **kwargs)[source]
Bases:
aries_cloudagent.core.error.ProfileError
Error raised when a profile session is not currently active.
- exception aries_cloudagent.core.error.ProtocolDefinitionValidationError(*args, error_code: Optional[str] = None, **kwargs)[source]
Bases:
aries_cloudagent.core.error.BaseError
Error raised when there is a problem validating a protocol definition.
- exception aries_cloudagent.core.error.ProtocolMinorVersionNotSupported(*args, error_code: Optional[str] = None, **kwargs)[source]
Bases:
aries_cloudagent.core.error.BaseError
Minimum minor version protocol error.
Error raised when protocol support exists but minimum minor version is higher than in @type parameter.
- exception aries_cloudagent.core.error.StartupError(*args, error_code: Optional[str] = None, **kwargs)[source]
Bases:
aries_cloudagent.core.error.BaseError
Error raised when there is a problem starting the conductor.
aries_cloudagent.core.event_bus module
A simple event bus.
- class aries_cloudagent.core.event_bus.Event(topic: str, payload: Optional[Any] = None)[source]
Bases:
object
A simple event object.
- property payload
Return this event’s payload.
- property topic
Return this event’s topic.
- with_metadata(metadata: aries_cloudagent.core.event_bus.EventMetadata) aries_cloudagent.core.event_bus.EventWithMetadata [source]
Annotate event with metadata and return EventWithMetadata object.
- class aries_cloudagent.core.event_bus.EventBus[source]
Bases:
object
A simple event bus implementation.
- async notify(profile: Profile, event: aries_cloudagent.core.event_bus.Event)[source]
Notify subscribers of event.
- Parameters
profile (Profile) – context of the event
event (Event) – event to emit
- subscribe(pattern: Pattern, processor: Callable)[source]
Subscribe to an event.
- Parameters
pattern (Pattern) – compiled regular expression for matching topics
processor (Callable) – async callable accepting profile and event
- unsubscribe(pattern: Pattern, processor: Callable)[source]
Unsubscribe from an event.
This method is idempotent. Repeated calls to unsubscribe will not result in errors.
- Parameters
pattern (Pattern) – regular expression used to subscribe the processor
processor (Callable) – processor to unsubscribe
- wait_for_event(waiting_profile: Profile, pattern: Pattern, cond: Optional[Callable[[aries_cloudagent.core.event_bus.Event], bool]] = None) Iterator[Awaitable[aries_cloudagent.core.event_bus.Event]] [source]
Capture an event and retrieve its value.
- class aries_cloudagent.core.event_bus.EventMetadata(pattern: Pattern, match: Match[str])[source]
Bases:
NamedTuple
Metadata passed alongside events to add context.
- pattern: Pattern
Alias for field number 0
- class aries_cloudagent.core.event_bus.EventWithMetadata(topic: str, payload: Any, metadata: aries_cloudagent.core.event_bus.EventMetadata)[source]
Bases:
aries_cloudagent.core.event_bus.Event
Event with metadata passed alongside events to add context.
- property metadata: aries_cloudagent.core.event_bus.EventMetadata
Return metadata.
- class aries_cloudagent.core.event_bus.MockEventBus[source]
Bases:
aries_cloudagent.core.event_bus.EventBus
A mock EventBus for testing.
- async notify(profile: Profile, event: aries_cloudagent.core.event_bus.Event)[source]
Append the event to MockEventBus.events.
aries_cloudagent.core.goal_code_registry module
Handle registration and publication of supported goal codes.
aries_cloudagent.core.oob_processor module
aries_cloudagent.core.plugin_registry module
Handle registration of plugin modules for extending functionality.
- class aries_cloudagent.core.plugin_registry.PluginRegistry(blocklist: Iterable[str] = [])[source]
Bases:
object
Plugin registry for indexing application plugins.
- async init_context(context: aries_cloudagent.config.injection_context.InjectionContext)[source]
Call plugin setup methods on the current context.
- async load_protocol_version(context: aries_cloudagent.config.injection_context.InjectionContext, mod: module, version_definition: Optional[dict] = None)[source]
Load a particular protocol version.
- async load_protocols(context: aries_cloudagent.config.injection_context.InjectionContext, plugin: module)[source]
For modules that don’t implement setup, register protocols manually.
- property plugins: Sequence[module]
Accessor for a list of all plugin modules.
- register_package(package_name: str) Sequence[module] [source]
Register all modules (sub-packages) under a given package name.
- register_protocol_events(context: aries_cloudagent.config.injection_context.InjectionContext)[source]
Call route register_events methods on the current context.
aries_cloudagent.core.profile module
Classes for managing profile information within a request context.
- class aries_cloudagent.core.profile.Profile(*, context: Optional[aries_cloudagent.config.injection_context.InjectionContext] = None, name: Optional[str] = None, created: bool = False)[source]
Bases:
abc.ABC
Base abstraction for handling identity-related state.
- property context: aries_cloudagent.config.injection_context.InjectionContext
Accessor for the injection context.
- inject(base_cls: Type[aries_cloudagent.config.base.InjectType], settings: Optional[Mapping[str, object]] = None) aries_cloudagent.config.base.InjectType [source]
Get the provided instance of a given class identifier.
- Parameters
cls – The base class to retrieve an instance of
settings – An optional mapping providing configuration to the provider
- Returns
An instance of the base class, or None
- inject_or(base_cls: Type[aries_cloudagent.config.base.InjectType], settings: Optional[Mapping[str, object]] = None, default: Optional[aries_cloudagent.config.base.InjectType] = None) Optional[aries_cloudagent.config.base.InjectType] [source]
Get the provided instance of a given class identifier or default if not found.
- Parameters
base_cls – The base class to retrieve an instance of
settings – An optional dict providing configuration to the provider
default – default return value if no instance is found
- Returns
An instance of the base class, or None
- abstract session(context: Optional[aries_cloudagent.config.injection_context.InjectionContext] = None) aries_cloudagent.core.profile.ProfileSession [source]
Start a new interactive session with no transaction support requested.
- property settings: aries_cloudagent.config.base.BaseSettings
Accessor for scope-specific settings.
- abstract transaction(context: Optional[aries_cloudagent.config.injection_context.InjectionContext] = None) aries_cloudagent.core.profile.ProfileSession [source]
Start a new interactive session with commit and rollback support.
If the current backend does not support transactions, then commit and rollback operations of the session will not have any effect.
- class aries_cloudagent.core.profile.ProfileManager[source]
Bases:
abc.ABC
Handle provision and open for profile instances.
- abstract async open(context: aries_cloudagent.config.injection_context.InjectionContext, config: Optional[Mapping[str, Any]] = None) aries_cloudagent.core.profile.Profile [source]
Open an instance of an existing profile.
- abstract async provision(context: aries_cloudagent.config.injection_context.InjectionContext, config: Optional[Mapping[str, Any]] = None) aries_cloudagent.core.profile.Profile [source]
Provision a new instance of a profile.
- class aries_cloudagent.core.profile.ProfileManagerProvider[source]
Bases:
aries_cloudagent.config.base.BaseProvider
The standard profile manager provider which keys off the selected wallet type.
- MANAGER_TYPES = {'askar': 'aries_cloudagent.askar.profile.AskarProfileManager', 'in_memory': 'aries_cloudagent.core.in_memory.InMemoryProfileManager', 'indy': 'aries_cloudagent.indy.sdk.profile.IndySdkProfileManager'}
- provide(settings: aries_cloudagent.config.base.BaseSettings, injector: aries_cloudagent.config.base.BaseInjector)[source]
Create the profile manager instance.
- class aries_cloudagent.core.profile.ProfileSession(profile: aries_cloudagent.core.profile.Profile, *, context: Optional[aries_cloudagent.config.injection_context.InjectionContext] = None, settings: Optional[Mapping[str, Any]] = None)[source]
Bases:
abc.ABC
An active connection to the profile management backend.
- async commit()[source]
Commit any updates performed within the transaction.
If the current session is not a transaction, then nothing is performed.
- property context: aries_cloudagent.config.injection_context.InjectionContext
Accessor for the associated injection context.
- inject(base_cls: Type[aries_cloudagent.config.base.InjectType], settings: Optional[Mapping[str, object]] = None) aries_cloudagent.config.base.InjectType [source]
Get the provided instance of a given class identifier.
- Parameters
cls – The base class to retrieve an instance of
settings – An optional mapping providing configuration to the provider
- Returns
An instance of the base class, or None
- inject_or(base_cls: Type[aries_cloudagent.config.base.InjectType], settings: Optional[Mapping[str, object]] = None, default: Optional[aries_cloudagent.config.base.InjectType] = None) Optional[aries_cloudagent.config.base.InjectType] [source]
Get the provided instance of a given class identifier or default if not found.
- Parameters
base_cls – The base class to retrieve an instance of
settings – An optional dict providing configuration to the provider
default – default return value if no instance is found
- Returns
An instance of the base class, or None
- property profile: aries_cloudagent.core.profile.Profile
Accessor for the associated profile instance.
- async rollback()[source]
Roll back any updates performed within the transaction.
If the current session is not a transaction, then nothing is performed.
- property settings: aries_cloudagent.config.base.BaseSettings
Accessor for scope-specific settings.
aries_cloudagent.core.protocol_registry module
Handle registration and publication of supported protocols.
- class aries_cloudagent.core.protocol_registry.ProtocolRegistry[source]
Bases:
object
Protocol registry for indexing message families.
- create_msg_types_for_minor_version(typesets, version_definition)[source]
Return mapping of message type to module path for minor versions.
- Parameters
typesets – Mappings of message types to register
version_definition – Optional version definition dict
- Returns
Typesets mapping
- async prepare_disclosed(context: aries_cloudagent.config.injection_context.InjectionContext, protocols: Sequence[str])[source]
Call controllers and return publicly supported message families and roles.
- protocols_matching_query(query: str) Sequence[str] [source]
Return a list of message protocols matching a query string.
- register_controllers(*controller_sets, version_definition=None)[source]
Add new controllers.
- Parameters
controller_sets – Mappings of message families to coroutines
aries_cloudagent.core.util module
Core utilities and constants.
- aries_cloudagent.core.util.get_proto_default_version(def_path: str, major_version: int = 1) str [source]
Return default protocol version from version_definition.
- async aries_cloudagent.core.util.get_proto_default_version_from_msg_class(profile: aries_cloudagent.core.profile.Profile, msg_class: type, major_version: int = 1) str [source]
Return default protocol version from version_definition.
- async aries_cloudagent.core.util.get_version_def_from_msg_class(profile: aries_cloudagent.core.profile.Profile, msg_class: type, major_version: int = 1)[source]
Return version_definition of a protocol from msg_class.
- aries_cloudagent.core.util.get_version_from_message(msg: aries_cloudagent.messaging.agent_message.AgentMessage) str [source]
Return version from provided AgentMessage.
- aries_cloudagent.core.util.get_version_from_message_type(msg_type: str) str [source]
Return version from provided message_type.
- async aries_cloudagent.core.util.validate_get_response_version(profile: aries_cloudagent.core.profile.Profile, rec_version: str, msg_class: type) Tuple[str, Optional[str]] [source]
Return a tuple with version to respond with and warnings.
Process received version and protocol version definition, returns the tuple.
- Parameters
profile – Profile
rec_version – received version from message
msg_class – type
- Returns
Tuple with response version and any warnings