@@ -497,6 +497,24 @@ def schema(self) -> ifcopenshell.util.schema.IFC_SCHEMA:
497497 return "" .join ("" .join (map (str , t )) if t [1 ] else "" for t in zip (prefixes , version_tuple [0 :2 ]))
498498
499499
500+ class file_header :
501+ def __init__ (self , file , header_data ):
502+ self .file = file
503+ self .header_data = header_data
504+
505+ @property
506+ def file_description (self ) -> entity_instance :
507+ return entity_instance .wrap_value (self .header_data .file_description_py (), file = self .file )
508+
509+ @property
510+ def file_name (self ) -> entity_instance :
511+ return entity_instance .wrap_value (self .header_data .file_name_py (), file = self .file )
512+
513+ @property
514+ def file_schema (self ) -> entity_instance :
515+ return entity_instance .wrap_value (self .header_data .file_schema_py (), file = self .file )
516+
517+
500518class file :
501519 """Base class for containing IFC files.
502520
@@ -514,7 +532,7 @@ class file:
514532 """
515533
516534 wrapped_data : ifcopenshell_wrapper .file
517- header : ifcopenshell_wrapper . IfcSpfHeader
535+ header : file_header
518536 units : dict [str , entity_instance ] = {}
519537 history_size : int = 64
520538 history : list [Transaction ]
@@ -1029,12 +1047,7 @@ def to_string(self) -> str:
10291047
10301048 @property
10311049 def header (self ):
1032- try : # Temporary workaround until new builds are ready. See #7131.
1033- h = self .wrapped_data .header ()
1034- except :
1035- return self .wrapped_data .header
1036- object .__setattr__ (h , "file_ref" , lambda inst : entity_instance .wrap_value (inst , file = self ))
1037- return h
1050+ return file_header (self , self .wrapped_data .header ())
10381051
10391052 @property
10401053 def storage (self ) -> Optional [rocksdb_file_storage ]:
0 commit comments