buildzr 0.0.12__py3-none-any.whl → 0.0.14__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
buildzr/dsl/explorer.py CHANGED
@@ -3,6 +3,10 @@ from buildzr.dsl.dsl import (
3
3
  SoftwareSystem,
4
4
  Container,
5
5
  Component,
6
+ DeploymentNode,
7
+ InfrastructureNode,
8
+ SoftwareSystemInstance,
9
+ ContainerInstance,
6
10
  )
7
11
 
8
12
  from buildzr.dsl.relations import (
@@ -27,10 +31,32 @@ from buildzr.dsl.interfaces import (
27
31
 
28
32
  class Explorer:
29
33
 
30
- def __init__(self, workspace_or_element: Union[Workspace, Person, SoftwareSystem, Container, Component]):
34
+ def __init__(
35
+ self,
36
+ workspace_or_element: Union[
37
+ Workspace,
38
+ Person,
39
+ SoftwareSystem,
40
+ Container,
41
+ Component,
42
+ DeploymentNode,
43
+ InfrastructureNode,
44
+ SoftwareSystemInstance,
45
+ ContainerInstance,
46
+ ]
47
+ ):
31
48
  self._workspace_or_element = workspace_or_element
32
49
 
33
- def walk_elements(self) -> Generator[Union[Person, SoftwareSystem, Container, Component], None, None]:
50
+ def walk_elements(self) -> Generator[Union[
51
+ Person,
52
+ SoftwareSystem,
53
+ Container,
54
+ Component,
55
+ DeploymentNode,
56
+ InfrastructureNode,
57
+ SoftwareSystemInstance,
58
+ ContainerInstance
59
+ ], None, None]:
34
60
  if self._workspace_or_element.children:
35
61
  for child in self._workspace_or_element.children:
36
62
  explorer = Explorer(child).walk_elements()
buildzr/dsl/expression.py CHANGED
@@ -10,6 +10,11 @@ from buildzr.dsl.dsl import (
10
10
  SoftwareSystem,
11
11
  Container,
12
12
  Component,
13
+ DeploymentNode,
14
+ InfrastructureNode,
15
+ SoftwareSystemInstance,
16
+ ContainerInstance,
17
+ TypedDynamicAttribute,
13
18
  )
14
19
 
15
20
  from buildzr.dsl.relations import _Relationship
@@ -19,7 +24,22 @@ from typing import Set, Union, Optional, List, Dict, Any, Callable, Tuple, Seque
19
24
  from typing_extensions import TypeIs
20
25
 
21
26
  def _has_technology_attribute(obj: DslElement) -> TypeIs[Union[Container, Component]]:
22
- if isinstance(obj, (Person, SoftwareSystem, Workspace)):
27
+ if isinstance(obj, (Person, SoftwareSystem, Workspace, SoftwareSystemInstance, ContainerInstance)):
28
+ return False
29
+ return True
30
+
31
+ def _has_group_attribute(obj: DslElement) -> TypeIs[Union[Person, SoftwareSystem, Container, Component]]:
32
+ if isinstance(obj, (Workspace, DeploymentNode, InfrastructureNode, SoftwareSystemInstance, ContainerInstance)):
33
+ return False
34
+ return True
35
+
36
+ def _has_name_attribute(obj: DslElement) -> TypeIs[Union[Person, SoftwareSystem, Container, Component, DeploymentNode, InfrastructureNode]]:
37
+ if isinstance(obj, (Workspace, SoftwareSystemInstance, ContainerInstance)):
38
+ return False
39
+ return True
40
+
41
+ def _has_environment_attribute(obj: DslElement) -> TypeIs[Union[ContainerInstance, SoftwareSystemInstance]]:
42
+ if isinstance(obj, (Workspace, Person, SoftwareSystem, Container, Component)):
23
43
  return False
24
44
  return True
25
45
 
@@ -37,7 +57,19 @@ class FlattenElement:
37
57
 
38
58
  @property
39
59
  def names(self) -> Set[Union[str]]:
40
- return set([str(element.model.name) for element in self._elements])
60
+
61
+ """
62
+ Returns the names of the elements.
63
+
64
+ If the element is a `SoftwareSystemInstance` or `ContainerInstance`,
65
+ which has no name attribute, it will be excluded from the result.
66
+ """
67
+
68
+ name_set: Set[str] = set()
69
+ for element in self._elements:
70
+ if _has_name_attribute(element):
71
+ name_set.add(str(element.model.name))
72
+ return name_set
41
73
 
42
74
  @property
43
75
  def tags(self) -> Set[Union[str]]:
@@ -47,12 +79,37 @@ class FlattenElement:
47
79
  all_tags = all_tags.union(tags)
48
80
  return all_tags
49
81
 
50
- class Element:
82
+ class WorkspaceExpression:
83
+
84
+ """
85
+ A class used to filter the allowable methods and properties of the
86
+ `Structurizr DSL` workspace. This is used to filter the elements and
87
+ relationships in the workspace.
88
+ """
89
+
90
+ def __init__(self, workspace: Workspace):
91
+ self._workspace = workspace
92
+ self._dynamic_attributes = self._workspace._dynamic_attrs
93
+
94
+ def software_system(self) -> TypedDynamicAttribute['SoftwareSystem']:
95
+ """
96
+ Returns the software system of the workspace. This is used to filter the
97
+ elements and relationships in the workspace.
98
+ """
99
+ return TypedDynamicAttribute['SoftwareSystem'](self._dynamic_attributes)
100
+
101
+ def person(self) -> TypedDynamicAttribute['Person']:
102
+ """
103
+ Returns the person of the workspace. This is used to filter the elements
104
+ and relationships in the workspace.
105
+ """
106
+ return TypedDynamicAttribute['Person'](self._dynamic_attributes)
107
+
108
+ class ElementExpression:
51
109
 
52
110
  def __init__(self, element: DslElement):
53
111
  self._element = element
54
112
 
55
- # TODO: Make a test for this in `tests/test_expression.py`
56
113
  @property
57
114
  def id(self) -> str:
58
115
  return cast(str, self._element.model.id)
@@ -76,6 +133,10 @@ class Element:
76
133
  def parent(self) -> Optional[Union[DslWorkspaceElement, DslElement]]:
77
134
  return self._element.parent
78
135
 
136
+ @property
137
+ def children(self) -> FlattenElement:
138
+ return FlattenElement(self._element.children)
139
+
79
140
  @property
80
141
  def sources(self) -> FlattenElement:
81
142
  return FlattenElement(self._element.sources)
@@ -86,23 +147,52 @@ class Element:
86
147
 
87
148
  @property
88
149
  def properties(self) -> Dict[str, Any]:
89
- return self._element.model.properties
150
+ if self._element.model.properties is not None:
151
+ return self._element.model.properties
152
+ return dict()
90
153
 
91
154
  @property
92
155
  def group(self) -> Optional[str]:
156
+
93
157
  """
94
- Returns the group of the element. The group is a string that is used to
158
+ Returns the group of the element (if applicable). The group is a string that is used to
95
159
  group elements in the Structurizr DSL.
96
160
  """
97
- if not isinstance(self._element.model, buildzr.models.Workspace):
161
+
162
+ if _has_group_attribute(self._element):
98
163
  return self._element.model.group
99
164
  return None
100
165
 
166
+ @property
167
+ def environment(self) -> Optional[str]:
168
+
169
+ """
170
+ Returns the environment of the element (if applicable). The environment
171
+ is a string that is used to group deployment nodes and instances in the
172
+ Structurizr DSL.
173
+ """
174
+
175
+ if _has_environment_attribute(self._element):
176
+ return self._element.model.environment
177
+ return None
178
+
179
+ def is_instance_of(self, other: DslElement) -> bool:
180
+
181
+ """
182
+ Returns `True` if the element is an instance of the other element.
183
+ """
184
+
185
+ if isinstance(self._element, SoftwareSystemInstance):
186
+ return self._element.model.softwareSystemId == other.model.id
187
+ elif isinstance(self._element, ContainerInstance):
188
+ return self._element.model.containerId == other.model.id
189
+ return False
190
+
101
191
  def __eq__(self, element: object) -> bool:
102
192
  return isinstance(element, type(self._element)) and\
103
193
  element.model.id == self._element.model.id
104
194
 
105
- class Relationship:
195
+ class RelationshipExpression:
106
196
 
107
197
  def __init__(self, relationship: DslRelationship):
108
198
  self._relationship = relationship
@@ -121,12 +211,12 @@ class Relationship:
121
211
  return self._relationship.model.technology
122
212
 
123
213
  @property
124
- def source(self) -> Element:
125
- return Element(self._relationship.source)
214
+ def source(self) -> ElementExpression:
215
+ return ElementExpression(self._relationship.source)
126
216
 
127
217
  @property
128
- def destination(self) -> Element:
129
- return Element(self._relationship.destination)
218
+ def destination(self) -> ElementExpression:
219
+ return ElementExpression(self._relationship.destination)
130
220
 
131
221
  @property
132
222
  def properties(self) -> Dict[str, Any]:
@@ -146,10 +236,10 @@ class Expression:
146
236
 
147
237
  def __init__(
148
238
  self,
149
- include_elements: Iterable[Union[DslElement, Callable[[Workspace, Element], bool]]]=[lambda w, e: True],
150
- exclude_elements: Iterable[Union[DslElement, Callable[[Workspace, Element], bool]]]=[],
151
- include_relationships: Iterable[Union[DslElement, Callable[[Workspace, Relationship], bool]]]=[lambda w, e: True],
152
- exclude_relationships: Iterable[Union[DslElement, Callable[[Workspace, Relationship], bool]]]=[],
239
+ include_elements: Iterable[Union[DslElement, Callable[[WorkspaceExpression, ElementExpression], bool]]]=[lambda w, e: True],
240
+ exclude_elements: Iterable[Union[DslElement, Callable[[WorkspaceExpression, ElementExpression], bool]]]=[],
241
+ include_relationships: Iterable[Union[DslElement, Callable[[WorkspaceExpression, RelationshipExpression], bool]]]=[lambda w, e: True],
242
+ exclude_relationships: Iterable[Union[DslElement, Callable[[WorkspaceExpression, RelationshipExpression], bool]]]=[],
153
243
  ) -> 'None':
154
244
  self._include_elements = include_elements
155
245
  self._exclude_elements = exclude_elements
@@ -171,12 +261,12 @@ class Expression:
171
261
  if isinstance(f, DslElement):
172
262
  includes.append(f == element)
173
263
  else:
174
- includes.append(f(workspace, Element(element)))
264
+ includes.append(f(WorkspaceExpression(workspace), ElementExpression(element)))
175
265
  for f in self._exclude_elements:
176
266
  if isinstance(f, DslElement):
177
267
  excludes.append(f == element)
178
268
  else:
179
- excludes.append(f(workspace, Element(element)))
269
+ excludes.append(f(WorkspaceExpression(workspace), ElementExpression(element)))
180
270
  if any(includes) and not any(excludes):
181
271
  filtered_elements.append(element)
182
272
 
@@ -198,9 +288,9 @@ class Expression:
198
288
  filtered_relationships: List[DslRelationship] = []
199
289
 
200
290
  def _is_relationship_of_excluded_elements(
201
- workspace: Workspace,
202
- relationship: Relationship,
203
- exclude_element_predicates: Iterable[Union[DslElement, Callable[[Workspace, Element], bool]]],
291
+ workspace: WorkspaceExpression,
292
+ relationship: RelationshipExpression,
293
+ exclude_element_predicates: Iterable[Union[DslElement, Callable[[WorkspaceExpression, ElementExpression], bool]]],
204
294
  ) -> bool:
205
295
  for f in exclude_element_predicates:
206
296
  if isinstance(f, DslElement):
@@ -222,20 +312,20 @@ class Expression:
222
312
  if isinstance(f, DslElement):
223
313
  includes.append(f == relationship)
224
314
  else:
225
- includes.append(f(workspace, Relationship(relationship)))
315
+ includes.append(f(WorkspaceExpression(workspace), RelationshipExpression(relationship)))
226
316
 
227
317
  for f in self._exclude_relationships:
228
318
  if isinstance(f, DslElement):
229
319
  excludes.append(f == relationship)
230
320
  else:
231
- excludes.append(f(workspace, Relationship(relationship)))
321
+ excludes.append(f(WorkspaceExpression(workspace), RelationshipExpression(relationship)))
232
322
 
233
323
  # Also exclude relationships whose source or destination elements
234
324
  # are excluded.
235
325
  excludes.append(
236
326
  _is_relationship_of_excluded_elements(
237
- workspace,
238
- Relationship(relationship),
327
+ WorkspaceExpression(workspace),
328
+ RelationshipExpression(relationship),
239
329
  self._exclude_elements,
240
330
  )
241
331
  )
@@ -3,6 +3,10 @@ from .interfaces import (
3
3
  DslRelationship,
4
4
  DslWorkspaceElement,
5
5
  DslViewElement,
6
+ DslDeploymentEnvironment,
7
+ DslInfrastructureNodeElement,
8
+ DslDeploymentNodeElement,
9
+ DslElementInstance,
6
10
  BindLeft,
7
11
  BindRight,
8
12
  BindLeftLate,
@@ -25,6 +25,10 @@ Model = Union[
25
25
  buildzr.models.SoftwareSystem,
26
26
  buildzr.models.Container,
27
27
  buildzr.models.Component,
28
+ buildzr.models.DeploymentNode,
29
+ buildzr.models.InfrastructureNode,
30
+ buildzr.models.SoftwareSystemInstance,
31
+ buildzr.models.ContainerInstance,
28
32
  ]
29
33
 
30
34
  TSrc = TypeVar('TSrc', bound='DslElement', contravariant=True)
@@ -205,4 +209,77 @@ class DslViewElement(ABC):
205
209
  @property
206
210
  @abstractmethod
207
211
  def model(self) -> ViewModel:
212
+ pass
213
+
214
+ class DslElementInstance(DslElement):
215
+
216
+ Model = Union[
217
+ buildzr.models.SoftwareSystemInstance,
218
+ buildzr.models.ContainerInstance,
219
+ ]
220
+
221
+ @property
222
+ @abstractmethod
223
+ def model(self) -> Model:
224
+ pass
225
+
226
+ @property
227
+ def parent(self) -> Optional['DslDeploymentNodeElement']:
228
+ pass
229
+
230
+ @property
231
+ def tags(self) -> Set[str]:
232
+ pass
233
+
234
+ @property
235
+ def element(self) -> DslElement:
236
+ pass
237
+
238
+ class DslInfrastructureNodeElement(DslElement):
239
+
240
+ @property
241
+ @abstractmethod
242
+ def model(self) -> buildzr.models.InfrastructureNode:
243
+ pass
244
+
245
+ @property
246
+ def tags(self) -> Set[str]:
247
+ pass
248
+
249
+ @property
250
+ @abstractmethod
251
+ def parent(self) -> Optional['DslDeploymentNodeElement']:
252
+ pass
253
+
254
+ class DslDeploymentNodeElement(DslElement):
255
+
256
+ @property
257
+ @abstractmethod
258
+ def model(self) -> buildzr.models.DeploymentNode:
259
+ pass
260
+
261
+ @property
262
+ def tags(self) -> Set[str]:
263
+ pass
264
+
265
+ @property
266
+ @abstractmethod
267
+ def parent(self) -> Optional['DslWorkspaceElement']:
268
+ pass
269
+
270
+ @property
271
+ @abstractmethod
272
+ def children(self) -> Optional[Sequence[Union[DslElementInstance, 'DslInfrastructureNodeElement', 'DslDeploymentNodeElement']]]:
273
+ pass
274
+
275
+ class DslDeploymentEnvironment(ABC):
276
+
277
+ @property
278
+ @abstractmethod
279
+ def parent(self) -> Optional[DslWorkspaceElement]:
280
+ pass
281
+
282
+ @property
283
+ @abstractmethod
284
+ def children(self) -> Sequence[DslDeploymentNodeElement]:
208
285
  pass
@@ -5,6 +5,15 @@ curl $schema_url > structurizr.yaml
5
5
  # Change from 'long' (unsupported) to 'integer'
6
6
  yq -i -y '.components.schemas.Workspace.properties.id.type = "integer"' structurizr.yaml
7
7
 
8
+ # Add `deploymentGroups: List[str]` to the following dataclasses:
9
+ # - `SoftwareSystemInstance`
10
+ # - `ContainerInstance`
11
+ # Because the `deploymentGroups` property is not in the schema, but it's
12
+ # something that is present in the JSON output if we convert the DSL into JSON
13
+ # (when using the `deploymentGroup` keyword).
14
+ yq -i -y '.components.schemas.ContainerInstance.properties.deploymentGroups = {"type": "array", "items": {"type": "string"}}' structurizr.yaml
15
+ yq -i -y '.components.schemas.SoftwareSystemInstance.properties.deploymentGroups = {"type": "array", "items": {"type": "string"}}' structurizr.yaml
16
+
8
17
  # Type 'integer' doesn't support 'number' type, but supports the following:
9
18
  # int32, int64, default, date-time, unix-time
10
19
  # yq -i 'select(.components.schemas.*.properties.*.format=="integer" and .components.schemas.*.properties.*.type=="number") .components.schemas.*.properties.*.format="default"' structurizr.yaml
buildzr/models/models.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: structurizr.yaml
3
- # timestamp: 2024-07-06T09:38:20+00:00
3
+ # timestamp: 2025-05-20T13:19:11+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1098,6 +1098,7 @@ class SoftwareSystemInstance:
1098
1098
  """
1099
1099
  The set of HTTP-based health checks for this software system instance.
1100
1100
  """
1101
+ deploymentGroups: Optional[List[str]] = None
1101
1102
 
1102
1103
 
1103
1104
  @dataclass
@@ -1142,6 +1143,7 @@ class ContainerInstance:
1142
1143
  """
1143
1144
  The set of HTTP-based health checks for this container instance.
1144
1145
  """
1146
+ deploymentGroups: Optional[List[str]] = None
1145
1147
 
1146
1148
 
1147
1149
  @dataclass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: buildzr
3
- Version: 0.0.12
3
+ Version: 0.0.14
4
4
  Summary: Structurizr for the `buildzr`s 🧱⚒️
5
5
  Project-URL: homepage, https://github.com/amirulmenjeni/buildzr
6
6
  Project-URL: issues, https://github.com/amirulmenjeni/buildzr/issues
@@ -11,12 +11,10 @@ Classifier: Development Status :: 3 - Alpha
11
11
  Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Operating System :: OS Independent
13
13
  Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.8
15
- Classifier: Programming Language :: Python :: 3.9
16
14
  Classifier: Programming Language :: Python :: 3.10
17
15
  Classifier: Programming Language :: Python :: 3.11
18
16
  Classifier: Programming Language :: Python :: 3.12
19
- Requires-Python: >=3.8
17
+ Requires-Python: >=3.10
20
18
  Requires-Dist: pyhumps==3.8.0
21
19
  Requires-Dist: pytest>=8.3.3
22
20
  Provides-Extra: dev
@@ -0,0 +1,24 @@
1
+ buildzr/__about__.py,sha256=Re70LR9m7cAhH54rssYyZTF_NDTijR8Lo_1hWF3ofTI,19
2
+ buildzr/__init__.py,sha256=hY-cOdjBQcz0v2m8cBF1oEJFIbcR3sWI-xww--0RKSo,99
3
+ buildzr/dsl/__init__.py,sha256=qJ41IXcabKUjvwMzgfUCFdmDnSBBK7VFADpoVdOYLKQ,538
4
+ buildzr/dsl/color.py,sha256=at5lo3WgLEDCjrnbu37ra1p1TjzdB51sxeW7pBMC_7U,4019
5
+ buildzr/dsl/dsl.py,sha256=qqKlz8KNzAxdwsdPM5YhVE2JhwYMRJ9o7KbMMarQGlw,83579
6
+ buildzr/dsl/explorer.py,sha256=m1nI0Rd0bXGj1uXDgTC4DJhc2FMma522IepPNvQF07E,1853
7
+ buildzr/dsl/expression.py,sha256=TLSe-uGlHhNqMPQU_5IRLIP-ZGsQ_ts3DquBMcYlwBg,11777
8
+ buildzr/dsl/relations.py,sha256=GBs5epr9uuExU_H6VcP4XY76iJPQ__rz_d8tZlhhWQ4,11891
9
+ buildzr/dsl/factory/__init__.py,sha256=niaYqvNPUWJejoPyRyABUtzVsoxaV8eSjzS9dta4bMI,30
10
+ buildzr/dsl/factory/gen_id.py,sha256=LnaeOCMngSvYkcGnuARjQYoUVWdcOoNHO2EHe6PMGco,538
11
+ buildzr/dsl/interfaces/__init__.py,sha256=3InvtLOyYNm9nCPFAkYVbunBQ4AVSdHZ46Ah0CkoLNM,294
12
+ buildzr/dsl/interfaces/interfaces.py,sha256=hLISS0cAfhHqhTWRI5UPKKzqmsPuHmFgdx3JjzBA01U,6750
13
+ buildzr/encoders/__init__.py,sha256=suID63Ay-023T0uKD25EAoGYmAMTa9AKxIjioccpiPM,32
14
+ buildzr/encoders/encoder.py,sha256=n8WLVMrisykBTLTr1z6PAxgqhqW2dFRZhSupOuMdx_A,3235
15
+ buildzr/models/__init__.py,sha256=SRfF7oDVlOOAi6nGKiJIUK6B_arqYLO9iSMp-2IZZps,21
16
+ buildzr/models/generate.sh,sha256=EJ63d4cYmRnMFzc3hIR6bro44PXYEOt3EE9BxY4F8cU,1670
17
+ buildzr/models/models.py,sha256=NJOFYiRQ2i_1gP2ajPNpEfVLAz-1iCqqt1gPOHDPIks,42587
18
+ buildzr/sinks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ buildzr/sinks/interfaces.py,sha256=LOZekP4WNjomD5J5f3FnZTwGj0aXMr6RbrvyFV5zn0E,383
20
+ buildzr/sinks/json_sink.py,sha256=onKOZTpwOQfeMEj1ONkuIEHBAQhx4yQSqqI_lgZBaP8,777
21
+ buildzr-0.0.14.dist-info/METADATA,sha256=CkcJWUlnCfXDHZQwMZWhbnxTgCkOIWDdoJI4n2dl4ZM,6480
22
+ buildzr-0.0.14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
23
+ buildzr-0.0.14.dist-info/licenses/LICENSE.md,sha256=e8e6W6tL4MbBY-c-gXMgDbaMf_BnaQDQv4Yoy42b-CI,1070
24
+ buildzr-0.0.14.dist-info/RECORD,,
@@ -1,24 +0,0 @@
1
- buildzr/__about__.py,sha256=BCu0JmKIBuKGzB3jxd2V1AqofeA6ZLJuDN4qaEsLYbg,18
2
- buildzr/__init__.py,sha256=hY-cOdjBQcz0v2m8cBF1oEJFIbcR3sWI-xww--0RKSo,99
3
- buildzr/dsl/__init__.py,sha256=k0G9blhA3NSzCBs1dSfBNzCh0iDS_ylkzS_5a3pqrSY,375
4
- buildzr/dsl/color.py,sha256=at5lo3WgLEDCjrnbu37ra1p1TjzdB51sxeW7pBMC_7U,4019
5
- buildzr/dsl/dsl.py,sha256=7OEz2JXm_1s7RN5G3wauwuBNly6odi19wPfpwC1FQI4,52601
6
- buildzr/dsl/explorer.py,sha256=GuQihoEvmTwiriXT3X8oasJ_U65ERyKJeJ2WW-S9D84,1389
7
- buildzr/dsl/expression.py,sha256=j847pBVQTvLbpxU1SB8ZYPbXO24SN-evprjAfkS6AGo,8258
8
- buildzr/dsl/relations.py,sha256=GBs5epr9uuExU_H6VcP4XY76iJPQ__rz_d8tZlhhWQ4,11891
9
- buildzr/dsl/factory/__init__.py,sha256=niaYqvNPUWJejoPyRyABUtzVsoxaV8eSjzS9dta4bMI,30
10
- buildzr/dsl/factory/gen_id.py,sha256=LnaeOCMngSvYkcGnuARjQYoUVWdcOoNHO2EHe6PMGco,538
11
- buildzr/dsl/interfaces/__init__.py,sha256=GRzfjdDxAUaZ-2n-eP4YaGLy3b0_giHhMshGqoj9rbo,176
12
- buildzr/dsl/interfaces/interfaces.py,sha256=OYOS-eGlkadGWXvcLSP1Qs9AnJfhtoJGh9UqJRC8gDk,5079
13
- buildzr/encoders/__init__.py,sha256=suID63Ay-023T0uKD25EAoGYmAMTa9AKxIjioccpiPM,32
14
- buildzr/encoders/encoder.py,sha256=n8WLVMrisykBTLTr1z6PAxgqhqW2dFRZhSupOuMdx_A,3235
15
- buildzr/models/__init__.py,sha256=SRfF7oDVlOOAi6nGKiJIUK6B_arqYLO9iSMp-2IZZps,21
16
- buildzr/models/generate.sh,sha256=924UoEXr5WBZ926TZfRgEQGHwBqtLGU5k0G2UfExLEg,1061
17
- buildzr/models/models.py,sha256=0LhLG1wmbt4dvROV5MEBZLLoxPbMpkUsOqNz525cynE,42489
18
- buildzr/sinks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- buildzr/sinks/interfaces.py,sha256=LOZekP4WNjomD5J5f3FnZTwGj0aXMr6RbrvyFV5zn0E,383
20
- buildzr/sinks/json_sink.py,sha256=onKOZTpwOQfeMEj1ONkuIEHBAQhx4yQSqqI_lgZBaP8,777
21
- buildzr-0.0.12.dist-info/METADATA,sha256=W2raGn9MDY9YAWC5wbwm8mwfwUbF8RQ2VXDaLsqLjPk,6579
22
- buildzr-0.0.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
23
- buildzr-0.0.12.dist-info/licenses/LICENSE.md,sha256=e8e6W6tL4MbBY-c-gXMgDbaMf_BnaQDQv4Yoy42b-CI,1070
24
- buildzr-0.0.12.dist-info/RECORD,,