@@ -57,20 +57,36 @@ def from_arrow_schema(cls, schema: pa.Schema) -> Table:
5757 columns = []
5858 for field in schema :
5959 columns .append (Column .from_arrow_field (field ))
60+ parent = None
61+ if arrow .METADATA_TABLE_DEPENDS_ON in schema .metadata :
62+ parent = Table (
63+ name = schema .metadata [arrow .METADATA_TABLE_DEPENDS_ON ].decode ("utf-8" ),
64+ columns = [],
65+ )
6066 return cls (
61- name = schema .metadata [arrow .METADATA_TABLE_NAME ].decode ("utf-8" ),
67+ name = schema .metadata .get (arrow .METADATA_TABLE_NAME , b"" ).decode ("utf-8" ),
68+ title = schema .metadata .get (arrow .METADATA_TABLE_TITLE , b"" ).decode ("utf-8" ),
6269 columns = columns ,
6370 description = schema .metadata .get (arrow .METADATA_TABLE_DESCRIPTION ).decode (
6471 "utf-8"
6572 ),
73+ is_incremental = schema .metadata .get (
74+ arrow .METADATA_INCREMENTAL , arrow .METADATA_FALSE
75+ )
76+ == arrow .METADATA_TRUE ,
77+ parent = parent ,
6678 )
6779
6880 def to_arrow_schema (self ):
6981 fields = []
7082 md = {
7183 arrow .METADATA_TABLE_NAME : self .name ,
7284 arrow .METADATA_TABLE_DESCRIPTION : self .description ,
73- # arrow.METADATA_CONSTRAINT_NAME:
85+ arrow .METADATA_TABLE_TITLE : self .title ,
86+ arrow .METADATA_TABLE_DEPENDS_ON : self .parent .name if self .parent else "" ,
87+ arrow .METADATA_INCREMENTAL : arrow .METADATA_TRUE
88+ if self .is_incremental
89+ else arrow .METADATA_FALSE ,
7490 }
7591 for column in self .columns :
7692 fields .append (column .to_arrow_field ())
0 commit comments