(ty: select_type)
| 211 | return from_cache |
| 212 | |
| 213 | def inner(ty: select_type) -> Iterator[str]: |
| 214 | if isinstance(ty, select_type): |
| 215 | for st in ty.select_list(): |
| 216 | yield from inner(st) |
| 217 | elif isinstance(ty, entity_type): |
| 218 | yield ty.name() |
| 219 | for st in ty.subtypes(): |
| 220 | yield from inner(st) |
| 221 | elif isinstance(ty, type_declaration): |
| 222 | # @todo shouldn't we list subtypes (e.g IfcPositiveLengthMeasure -> IfcLengthMeasure) here as well? |
| 223 | yield ty.name() |
| 224 | elif isinstance(ty, enumeration_type): |
| 225 | yield ty.name() |
| 226 | else: |
| 227 | # @todo raise exception? |
| 228 | pass |
| 229 | |
| 230 | v = select_members_cache[cache_key] = set(inner(ty)) |
| 231 | return v |
no test coverage detected