MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / Composition

Class Composition

misc/python/materialize/mzcompose/composition.py:111–1930  ·  view source on GitHub ↗

A loaded mzcompose.py file.

Source from the content-addressed store, hash-verified

109
110
111class Composition:
112 """A loaded mzcompose.py file."""
113
114 def __init__(
115 self,
116 repo: mzbuild.Repository,
117 name: str,
118 preserve_ports: bool = False,
119 silent: bool = False,
120 munge_services: bool = True,
121 resolve_image_specs: bool = True,
122 project_name: str | None = None,
123 sanity_restart_mz: bool = False,
124 host_network: bool = False,
125 ):
126 self.conns = {}
127 self.name = name
128 self.description = None
129 self.repo = repo
130 self.preserve_ports = preserve_ports
131 self.project_name = project_name or name
132 self.silent = silent
133 self.workflows: dict[str, Callable[..., None]] = {}
134 self.test_results: OrderedDict[str, TestResult] = OrderedDict()
135 self.has_testdrive_junit: bool = False
136 self.has_sqllogictest_junit: bool = False
137 # Per-thread cached YAML file is held in self._tls.file_and_gen.
138 # When self.compose is mutated, _invalidate_compose_files() bumps
139 # self._compose_gen so each thread regenerates on its next invoke.
140 # Avoids cross-thread races on a shared dict that previously caused
141 # docker compose children to inherit the wrong /dev/fd/N.
142 self._compose_gen: object = object()
143 self._tls = threading.local()
144 self.sources_and_sinks_ignored_from_validation = set()
145 self.is_sanity_restart_mz = sanity_restart_mz
146 self.current_test_case_name_override: str | None = None
147 self.host_network = host_network
148 self.resolve_image_specs = resolve_image_specs
149
150 if name in self.repo.compositions:
151 self.path = self.repo.compositions[name]
152 else:
153 raise UnknownCompositionError(name)
154
155 self.compose: dict[str, Any] = {
156 "services": {},
157 "networks": {},
158 # "networks": {
159 # "mzcompose": {"ipam": {"config": [{"subnet": "10.10.0.0/24"}]}}
160 # },
161 }
162
163 # Add default volumes
164 self.compose.setdefault("volumes", {}).update(
165 {
166 "mzdata": None,
167 "pgdata": None,
168 "mysqldata": None,

Callers 4

load_compositionFunction · 0.90

Calls 1

compileMethod · 0.80

Tested by

no test coverage detected