# Module `redvox.api1000.common.metadata`

This module provides functions and wrappers for working API M metadata fields.

Expand source code

    """
    This module provides functions and wrappers for working API M metadata fields.
    """

    from typing import Dict

    from redvox.api1000.common.typing import check_type

    class Metadata:
        """
        This class encapsulates the API M metadata fields providing high-level methods for manipulating the underlying
        mapping.
        """

        def __init__(self, metadata_proto) -> None:
            """
            Instantiates this wrapper.
            :param metadata_proto: The protobuf field backing this metadata.
            """
            self._metadata_proto = metadata_proto

        def get_metadata_count(self) -> int:
            """
            Returns the number of key-pair values stored in this metadata.
            :return: The number of key-pair values stored in this metadata.
            """
            return len(self._metadata_proto)

        def get_metadata(self) -> Dict[str, str]:
            """
            Returns the metadata as a dictionary.
            :return: The metadata as a dictionary.
            """
            metadata_dict: Dict[str, str] = dict()
            for key, value in self._metadata_proto.items():
                metadata_dict[key] = value
            return metadata_dict

        def set_metadata(self, metadata: Dict[str, str]) -> "Metadata":
            """
            Sets the metadata to passed in dictionary.
            :param metadata: Sets the metadata to this.
            :return: This instance of Metadata.
            """
            for key, value in metadata.items():
                check_type(key, [str])
                check_type(value, [str])

            self._metadata_proto.clear()
            for key, value in metadata.items():
                self._metadata_proto[key] = value

            return self

        def append_metadata(self, key: str, value: str) -> "Metadata":
            """
            Appends a key-value pair to the metadata mapping.
            :param key: Key to append.
            :param value: Value to append.
            :return: This instance of Metadata.
            """
            check_type(key, [str])
            check_type(value, [str])

            self._metadata_proto[key] = value
            return self

        def clear_metadata(self) -> "Metadata":
            """
            Clears all metadata.
            :return: This instance of metadata
            """
            self._metadata_proto.clear()
            return self

## Classes

`class Metadata (metadata_proto)`

  This class encapsulates the API M metadata fields providing high-level methods for manipulating the underlying mapping.

  Instantiates this wrapper. :param metadata_proto: The protobuf field backing this metadata.

  Expand source code

      class Metadata:
          """
          This class encapsulates the API M metadata fields providing high-level methods for manipulating the underlying
          mapping.
          """

          def __init__(self, metadata_proto) -> None:
              """
              Instantiates this wrapper.
              :param metadata_proto: The protobuf field backing this metadata.
              """
              self._metadata_proto = metadata_proto

          def get_metadata_count(self) -> int:
              """
              Returns the number of key-pair values stored in this metadata.
              :return: The number of key-pair values stored in this metadata.
              """
              return len(self._metadata_proto)

          def get_metadata(self) -> Dict[str, str]:
              """
              Returns the metadata as a dictionary.
              :return: The metadata as a dictionary.
              """
              metadata_dict: Dict[str, str] = dict()
              for key, value in self._metadata_proto.items():
                  metadata_dict[key] = value
              return metadata_dict

          def set_metadata(self, metadata: Dict[str, str]) -> "Metadata":
              """
              Sets the metadata to passed in dictionary.
              :param metadata: Sets the metadata to this.
              :return: This instance of Metadata.
              """
              for key, value in metadata.items():
                  check_type(key, [str])
                  check_type(value, [str])

              self._metadata_proto.clear()
              for key, value in metadata.items():
                  self._metadata_proto[key] = value

              return self

          def append_metadata(self, key: str, value: str) -> "Metadata":
              """
              Appends a key-value pair to the metadata mapping.
              :param key: Key to append.
              :param value: Value to append.
              :return: This instance of Metadata.
              """
              check_type(key, [str])
              check_type(value, [str])

              self._metadata_proto[key] = value
              return self

          def clear_metadata(self) -> "Metadata":
              """
              Clears all metadata.
              :return: This instance of metadata
              """
              self._metadata_proto.clear()
              return self

  ### Methods

  `def append_metadata(self, key: str, value: str) ‑> Metadata`

    Appends a key-value pair to the metadata mapping. :param key: Key to append. :param value: Value to append. :return: This instance of Metadata.

    Expand source code

        def append_metadata(self, key: str, value: str) -> "Metadata":
            """
            Appends a key-value pair to the metadata mapping.
            :param key: Key to append.
            :param value: Value to append.
            :return: This instance of Metadata.
            """
            check_type(key, [str])
            check_type(value, [str])

            self._metadata_proto[key] = value
            return self

  `def clear_metadata(self) ‑> Metadata`

    Clears all metadata. :return: This instance of metadata

    Expand source code

        def clear_metadata(self) -> "Metadata":
            """
            Clears all metadata.
            :return: This instance of metadata
            """
            self._metadata_proto.clear()
            return self

  `def get_metadata(self) ‑> Dict[str, str]`

    Returns the metadata as a dictionary. :return: The metadata as a dictionary.

    Expand source code

        def get_metadata(self) -> Dict[str, str]:
            """
            Returns the metadata as a dictionary.
            :return: The metadata as a dictionary.
            """
            metadata_dict: Dict[str, str] = dict()
            for key, value in self._metadata_proto.items():
                metadata_dict[key] = value
            return metadata_dict

  `def get_metadata_count(self) ‑> int`

    Returns the number of key-pair values stored in this metadata. :return: The number of key-pair values stored in this metadata.

    Expand source code

        def get_metadata_count(self) -> int:
            """
            Returns the number of key-pair values stored in this metadata.
            :return: The number of key-pair values stored in this metadata.
            """
            return len(self._metadata_proto)

  `def set_metadata(self, metadata: Dict[str, str]) ‑> Metadata`

    Sets the metadata to passed in dictionary. :param metadata: Sets the metadata to this. :return: This instance of Metadata.

    Expand source code

        def set_metadata(self, metadata: Dict[str, str]) -> "Metadata":
            """
            Sets the metadata to passed in dictionary.
            :param metadata: Sets the metadata to this.
            :return: This instance of Metadata.
            """
            for key, value in metadata.items():
                check_type(key, [str])
                check_type(value, [str])

            self._metadata_proto.clear()
            for key, value in metadata.items():
                self._metadata_proto[key] = value

            return self