Source code for aws_resource_search.searcher_metadata
# -*- coding: utf-8 -*-
"""
See :class:`SearcherMetadata`.
"""
import dataclasses
from .base_model import BaseModel
[docs]@dataclasses.dataclass
class SearcherMetadata(BaseModel):
"""
This class is a data container for the metadata of a
:class:`~aws_resource_search.base_searcher.BaseSearcher``.
It describes the searcher's ID, description, and the path to the
corresponding searcher module. It doesn't contain any data about
the searcher's logic.
This class is the data model for the ``aws_resource_search/searchers.json``
This class is used heavily in the code generation process.
.. seealso::
:ref:`what-is-searcher`
Example:
.. code-block:: python
SearcherMetadata(
id="s3-bucket",
desc="A bucket is a container for objects.",
klass="S3BucketSearcher",
module="s3",
ngram="simple storage service",
var="s3_bucket_searcher"
)
:param id: the maintainer defined unique identifier of the resource type,
using hyphen-case.
:param desc: the maintainer defined description for the specific resource type.
:param ngram: ngram search string for the resource type.
:param module: the path to the searcher module, for example,
:mod:`/path/to/aws_resource_search/res/awslambda.py (aws_resource_search.res.awslambda) <aws_resource_search.res.awslambda>`
:param klass: the class name in the searcher module, for example ``LambdaFunction``
:param var: the variable name of the searcher class instance of the
searcher module, for example ``lambda_function_searcher``.
"""
id: str = dataclasses.field()
desc: str = dataclasses.field()
ngram: str = dataclasses.field()
module: str = dataclasses.field(default=None)
klass: str = dataclasses.field(default=None)
var: str = dataclasses.field(default=None)
@property
def id_snake(self) -> str:
"""
Example::
"s3_bucket"
"""
return self.id.replace("-", "_")
@property
def id_slug(self) -> str:
"""
Example::
"s3-bucket"
"""
return self.id.replace("_", "-")