MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / asdict

Method asdict

src/ifctester/ifctester/ids.py:210–239  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

208 self.is_ifc_version = None
209
210 def asdict(self) -> dict[str, Any]:
211 results: dict[str, Any] = {
212 "@name": self.name,
213 "@ifcVersion": self.ifcVersion,
214 "applicability": {},
215 "requirements": {},
216 }
217 for attribute in ["identifier", "description", "instructions"]:
218 value = getattr(self, attribute)
219 if value is not None:
220 results[f"@{attribute}"] = value
221 for clause_type in ["applicability", "requirements"]:
222 clause = getattr(self, clause_type)
223 if not clause:
224 continue
225 facets = {}
226 for facet in clause:
227 facet_type = type(facet).__name__
228 facet_type = facet_type[0].lower() + facet_type[1:]
229 facets.setdefault(facet_type, []).append(facet.asdict(clause_type))
230 # Canonicalise ordering as per XSD requirements
231 for facet_type in ("entity", "partOf", "classification", "attribute", "property", "material"):
232 if facet_type in facets:
233 results[clause_type][facet_type] = facets[facet_type]
234 if clause_type == "applicability":
235 for attribute in ["minOccurs", "maxOccurs"]:
236 value = getattr(self, attribute)
237 if value is not None:
238 results[clause_type][f"@{attribute}"] = value
239 return results
240
241 def parse(self, ids_dict):
242 self.name = ids_dict.get("@name", "")

Calls 5

lowerMethod · 0.80
setdefaultMethod · 0.80
typeFunction · 0.50
appendMethod · 0.45
asdictMethod · 0.45