11import types
2- import re
2+ import re
33import numbers
44import itertools
55
99
1010try :
1111 from .mvd_info import MvdInfo , LARK_AVAILABLE
12- except ImportError : # in case of running module locally (e.g. test_parser.py)
12+ except ImportError : # in case of running module locally (e.g. test_parser.py)
1313 from mvd_info import MvdInfo , LARK_AVAILABLE
1414
15+
1516class file :
1617 """
1718 A somewhat compatible interface (but very limited) to ifcopenshell.file
1819 """
1920
20- def __init__ (self , result :ParseResult ):
21+ def __init__ (self , result : ParseResult ):
2122 self .header_ = result .header
2223 self .data_ = result .entities
2324
@@ -48,14 +49,13 @@ def schema_version(self) -> tuple[int, int, int, int]:
4849
4950 E.g. IFC4X3_ADD2 is represented as (4, 3, 2, 0).
5051 """
51- schema = self .wrapped_data . schema
52+ schema = self .schema
5253 version = []
5354 for prefix in ("IFC" , "X" , "_ADD" , "_TC" ):
5455 number = re .search (prefix + r"(\d)" , schema )
5556 version .append (int (number .group (1 )) if number else 0 )
5657 return tuple (version )
5758
58-
5959 @property
6060 def header (self ):
6161 header = {}
@@ -64,8 +64,7 @@ def header(self):
6464 header [field_name .lower ()] = namedtuple_class (* field_data )
6565
6666 return types .SimpleNamespace (** header )
67-
68-
67+
6968 @property
7069 def mvd (self ):
7170 if not LARK_AVAILABLE or MvdInfo is None :
@@ -104,5 +103,6 @@ def by_type(self, type: str) -> list[entity_instance]:
104103 )
105104 )
106105
107- def open (fn , only_header = False ) -> file :
108- return file (parse (filename = fn , only_header = only_header ))
106+
107+ def open (fn , only_header = False ) -> file :
108+ return file (parse (filename = fn , only_header = only_header ))
0 commit comments