Source code for evergreen.manifest
"""Representation of evergreen manifest."""
from __future__ import absolute_import
from typing import TYPE_CHECKING, Any, Dict, Optional
from evergreen.base import _BaseEvergreenObject, evg_attrib
if TYPE_CHECKING:
from evergreen.api import EvergreenApi
[docs]class ManifestModule(_BaseEvergreenObject):
"""Represents a module in the evergreen manifest."""
branch = evg_attrib("branch")
repo = evg_attrib("repo")
revision = evg_attrib("revision")
owner = evg_attrib("owner")
url = evg_attrib("url")
def __init__(self, name: str, json: Dict[str, Any], api: "EvergreenApi") -> None:
"""
Create an instance of an evergreen manifest module.
:param json: json representing manifest.
:param api: evergreen api object
"""
super(ManifestModule, self).__init__(json, api)
self.name = name
[docs]class Manifest(_BaseEvergreenObject):
"""Representation of an evergreen manifest."""
id = evg_attrib("id")
revision = evg_attrib("revision")
project = evg_attrib("project")
branch = evg_attrib("branch")
def __init__(self, json: Dict[str, Any], api: "EvergreenApi") -> None:
"""
Create an instance of an evergreen version manifest.
:param json: json representing manifest.
:param api: evergreen api object.
"""
super(Manifest, self).__init__(json, api)
@property
def modules(self) -> Optional[Dict[str, ManifestModule]]:
"""Map of modules in this manifest."""
if "modules" not in self.json:
return {}
modules = self.json["modules"].items()
return {
module_key: ManifestModule(module_key, module_value, self._api)
for module_key, module_value in modules
}