aea.configurations.data_
types
Base config data types.
JSONSerializable Objects
class JSONSerializable(ABC)
Interface for JSON-serializable objects.
json
| @property
| @abstractmethod
| json() -> Dict
Compute the JSON representation.
from_
json
| @classmethod
| from_json(cls, obj: Dict)
Build from a JSON object.
PackageVersion Objects
@functools.total_ordering
class PackageVersion()
A package version.
__
init__
| __init__(version_like: PackageVersionLike)
Initialize a package version.
Arguments:
version_like
: a string, os a semver.VersionInfo object.
is_
latest
| @property
| is_latest() -> bool
Check whether the version is 'latest'.
__
str__
| __str__() -> str
Get the string representation.
__
eq__
| __eq__(other) -> bool
Check equality.
__
lt__
| __lt__(other)
Compare with another object.
PackageType Objects
class PackageType(Enum)
Package types.
to_
plural
| to_plural() -> str
Get the plural name.
PackageType.AGENT.to_plural() 'agents' PackageType.PROTOCOL.to_plural() 'protocols' PackageType.CONNECTION.to_plural() 'connections' PackageType.SKILL.to_plural() 'skills' PackageType.CONTRACT.to_plural() 'contracts'
__
str__
| __str__()
Convert to string.
ComponentType Objects
class ComponentType(Enum)
Enum of component types supported.
to_
package_
type
| to_package_type() -> PackageType
Get package type for component type.
plurals
| @staticmethod
| plurals() -> Collection[str]
Get the collection of type names, plural.
ComponentType.plurals() ['protocols', 'connections', 'skills', 'contracts']
to_
plural
| to_plural() -> str
Get the plural version of the component type.
ComponentType.PROTOCOL.to_plural() 'protocols' ComponentType.CONNECTION.to_plural() 'connections' ComponentType.SKILL.to_plural() 'skills' ComponentType.CONTRACT.to_plural() 'contracts'
__
str__
| __str__() -> str
Get the string representation.
PublicId Objects
class PublicId(JSONSerializable)
This class implement a public identifier.
A public identifier is composed of three elements: - author - name - version
The concatenation of those three elements gives the public identifier:
author/name:version
public_id = PublicId("author", "my_package", "0.1.0") assert public_id.author == "author" assert public_id.name == "my_package" assert public_id.version == "0.1.0" 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__
| __init__(author: SimpleIdOrStr, name: SimpleIdOrStr, version: Optional[PackageVersionLike] = None)
Initialize the public identifier.
author
| @property
| author() -> str
Get the author.
name
| @property
| name() -> str
Get the name.
version
| @property
| version() -> str
Get the version string.
package_
version
| @property
| package_version() -> PackageVersion
Get the package version object.
to_
any
| to_any() -> "PublicId"
Return the same public id, but with any version.
same_
prefix
| same_prefix(other: "PublicId") -> bool
Check if the other public id has the same author and name of this.
to_
latest
| to_latest() -> "PublicId"
Return the same public id, but with latest version.
is_
valid_
str
| @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
| @classmethod
| from_str(cls, public_id_string: str) -> "PublicId"
Initialize the public id from the string.
str(PublicId.from_str("author/package_name:0.1.0")) 'author/package_name:0.1.0'
A bad formatted input raises value error:
PublicId.from_str("bad/formatted:input") Traceback (most recent call last): ... ValueError: Input 'bad/formatted:input' is not well formatted.
Arguments:
public_id_string
: the public id in string format.
Returns:
the public id object.
Raises:
ValueError
: if the string in input is not well formatted.
from_
uri_
path
| @classmethod
| from_uri_path(cls, public_id_uri_path: str) -> "PublicId"
Initialize the public id from the string.
str(PublicId.from_uri_path("author/package_name/0.1.0")) 'author/package_name:0.1.0'
A bad formatted input raises value error:
PublicId.from_uri_path("bad/formatted:input") Traceback (most recent call last): ... ValueError: Input 'bad/formatted:input' is not well formatted.
Arguments:
public_id_uri_path
: the public id in uri path string format.
Returns:
the public id object.
Raises:
ValueError
: if the string in input is not well formatted.
to_
uri_
path
| @property
| to_uri_path() -> str
Turn the public id into a uri path string.
Returns:
uri path string
json
| @property
| json() -> Dict
Compute the JSON representation.
from_
json
| @classmethod
| from_json(cls, obj: Dict)
Build from a JSON object.
__
hash__
| __hash__()
Get the hash.
__
str__
| __str__()
Get the string representation.
__
repr__
| __repr__()
Get the representation.
__
eq__
| __eq__(other)
Compare with another object.
__
lt__
| __lt__(other)
Compare two public ids.
public_id_1 = PublicId("author_1", "name_1", "0.1.0") public_id_2 = PublicId("author_1", "name_1", "0.1.1") public_id_3 = PublicId("author_1", "name_2", "0.1.0") public_id_1 > public_id_2 False public_id_1 < public_id_2 True
public_id_1 < public_id_3 Traceback (most recent call last): ... ValueError: The public IDs author_1/name_1:0.1.0 and author_1/name_2:0.1.0 cannot be compared. Their author or name attributes are different.
PackageId Objects
class PackageId()
A package identifier.
__
init__
| __init__(package_type: Union[PackageType, str], public_id: PublicId)
Initialize the package id.
Arguments:
package_type
: the package type.public_id
: the public id.
package_
type
| @property
| package_type() -> PackageType
Get the package type.
public_
id
| @property
| public_id() -> PublicId
Get the public id.
author
| @property
| author() -> str
Get the author of the package.
name
| @property
| name() -> str
Get the name of the package.
version
| @property
| version() -> str
Get the version of the package.
package_
prefix
| @property
| package_prefix() -> Tuple[PackageType, str, str]
Get the package identifier without the version.
from_
uri_
path
| @classmethod
| from_uri_path(cls, package_id_uri_path: str) -> "PackageId"
Initialize the public id from the string.
str(PackageId.from_uri_path("skill/author/package_name/0.1.0")) '(skill, author/package_name:0.1.0)'
A bad formatted input raises value error:
PackageId.from_uri_path("very/bad/formatted:input") Traceback (most recent call last): ... ValueError: Input 'very/bad/formatted:input' is not well formatted.
Arguments:
public_id_uri_path
: the public id in uri path string format.
Returns:
the public id object.
Raises:
ValueError
: if the string in input is not well formatted.
to_
uri_
path
| @property
| to_uri_path() -> str
Turn the package id into a uri path string.
Returns:
uri path string
__
hash__
| __hash__()
Get the hash.
__
str__
| __str__()
Get the string representation.
__
repr__
| __repr__()
Get the object representation in string.
__
eq__
| __eq__(other)
Compare with another object.
__
lt__
| __lt__(other)
Compare two public ids.
ComponentId Objects
class ComponentId(PackageId)
Class to represent a component identifier.
A component id is a package id, but excludes the case when the package is an agent.
pacakge_id = PackageId(PackageType.PROTOCOL, PublicId("author", "name", "0.1.0")) component_id = ComponentId(ComponentType.PROTOCOL, PublicId("author", "name", "0.1.0")) pacakge_id == component_id True
component_id2 = ComponentId(ComponentType.PROTOCOL, PublicId("author", "name", "0.1.1")) pacakge_id == component_id2 False
__
init__
| __init__(component_type: Union[ComponentType, str], public_id: PublicId)
Initialize the component id.
Arguments:
component_type
: the component type.public_id
: the public id.
component_
type
| @property
| component_type() -> ComponentType
Get the component type.
component_
prefix
| @property
| component_prefix() -> Tuple[ComponentType, str, str]
Get the component identifier without the version.
same_
prefix
| same_prefix(other: "ComponentId") -> bool
Check if the other component id has the same type, author and name of this.
prefix_
import_
path
| @property
| prefix_import_path() -> str
Get the prefix import path for this component.
json
| @property
| json() -> Dict
Get the JSON representation.
from_
json
| @classmethod
| from_json(cls, json_data: Dict) -> "ComponentId"
Create component id from json data.
PyPIPackageName Objects
class PyPIPackageName(RegexConstrainedString)
A PyPI Package name.
GitRef Objects
class GitRef(RegexConstrainedString)
A Git reference.
It can be a branch name, a commit hash or a tag.
Dependency Objects
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.
__
init__
| __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 objectindex
: the URL to the PyPI server.git
: the URL to a git repository.ref
: the Git reference (branch/commit/tag).
name
| @property
| name() -> str
Get the name.
version
| @property
| version() -> str
Get the version.
index
| @property
| index() -> Optional[str]
Get the index.
git
| @property
| git() -> Optional[str]
Get the git.
ref
| @property
| ref() -> Optional[str]
Get the ref.
from_
json
| @classmethod
| from_json(cls, obj: Dict[str, Dict[str, str]]) -> "Dependency"
Parse a dependency object from a dictionary.
to_
json
| to_json() -> Dict[str, Dict[str, str]]
Transform the object to JSON.
get_
pip_
install_
args
| get_pip_install_args() -> List[str]
Get 'pip install' arguments.
__
str__
| __str__() -> str
Get the string representation.
__
eq__
| __eq__(other)
Compare with another object.
Dependencies
A dictionary from package name to dependency data structure (see above). The package name must satisfy the constraints on Python packages names.
The main advantage of having a dictionary is that we implicitly filter out dependency duplicates. We cannot have two items with the same package name since the keys of a YAML object form a set.
CRUDCollection Objects
class CRUDCollection(Generic[T])
Interface of a CRUD collection.
__
init__
| __init__()
Instantiate a CRUD collection.
create
| create(item_id: str, item: T) -> None
Add an item.
Arguments:
item_id
: the item id.item
: the item to be added.
Returns:
None
Raises:
ValueError
: if the item with the same id is already in the collection.
read
| read(item_id: str) -> Optional[T]
Get an item by its name.
Arguments:
item_id
: the item id.
Returns:
the associated item, or None if the item id is not present.
update
| update(item_id: str, item: T) -> None
Update an existing item.
Arguments:
item_id
: the item id.item
: the item to be added.
Returns:
None
delete
| delete(item_id: str) -> None
Delete an item.
read_
all
| read_all() -> List[Tuple[str, T]]
Read all the items.
keys
| keys() -> Set[str]
Get the set of keys.