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

Method report_specification

src/ifctester/ifctester/reporter.py:295–398  ·  view source on GitHub ↗
(self, specification: Specification)

Source from the content-addressed store, hash-verified

293 return self.results
294
295 def report_specification(self, specification: Specification) -> ResultsSpecification:
296 applicability = [a.to_string("applicability") for a in specification.applicability]
297 total_applicable = len(specification.applicable_entities)
298 total_checks = 0
299 total_checks_pass = 0
300 requirements = []
301 for requirement in specification.requirements:
302 total_fail = len(requirement.failures)
303 total_pass = total_applicable - total_fail
304 percent_pass = math.floor((total_pass / total_applicable) * 100) if total_applicable else "N/A"
305 total_checks += total_applicable
306 total_checks_pass += total_pass
307 facet_type = type(requirement).__name__
308 value = ""
309 if facet_type == "Entity":
310 if requirement.predefinedType:
311 label = "IFC Class / Predefined Type"
312 value = f"{requirement.name}.{requirement.predefinedType}"
313 else:
314 label = "IFC Class"
315 value = requirement.name
316 elif facet_type == "Attribute":
317 label = requirement.name
318 if requirement.value:
319 value = requirement.value
320 elif facet_type == "Classification":
321 if requirement.system and requirement.value:
322 label = "System / Reference"
323 value = f"{requirement.system} / {requirement.value}"
324 elif requirement.system:
325 label = "System"
326 value = requirement.system
327 elif requirement.value:
328 label = "Reference"
329 value = requirement.value
330 elif facet_type == "PartOf":
331 label = requirement.relation
332 if requirement.predefinedType:
333 value = f"{requirement.name}.{requirement.predefinedType}"
334 else:
335 value = requirement.name
336 elif facet_type == "Property":
337 label = f"{requirement.propertySet}.{requirement.baseName}"
338 if requirement.value:
339 value = requirement.value
340 elif facet_type == "Material":
341 label = "Name / Category"
342 if requirement.value:
343 value = requirement.value
344 requirements.append(
345 ResultsRequirement(
346 facet_type=facet_type,
347 metadata=requirement.asdict("requirement"),
348 label=label,
349 value=value,
350 description=requirement.to_string("requirement", specification, requirement),
351 status=requirement.status,
352 passed_entities=self.report_passed_entities(requirement),

Callers 1

reportMethod · 0.95

Calls 9

ResultsRequirementClass · 0.85
typeFunction · 0.50
to_stringMethod · 0.45
appendMethod · 0.45
asdictMethod · 0.45

Tested by

no test coverage detected