1818from enum import Enum
1919from typing import (
2020 Callable ,
21- Dict ,
22- List ,
23- Tuple ,
2421)
2522
2623from pyiceberg .avro .decoder import BinaryDecoder
114111
115112
116113def construct_reader (
117- file_schema : Schema | IcebergType , read_types : Dict [int , Callable [..., StructProtocol ]] = EMPTY_DICT
114+ file_schema : Schema | IcebergType , read_types : dict [int , Callable [..., StructProtocol ]] = EMPTY_DICT
118115) -> Reader :
119116 """Construct a reader from a file schema.
120117
@@ -146,7 +143,7 @@ class ConstructWriter(SchemaVisitorPerPrimitiveType[Writer]):
146143 def schema (self , schema : Schema , struct_result : Writer ) -> Writer :
147144 return struct_result
148145
149- def struct (self , struct : StructType , field_results : List [Writer ]) -> Writer :
146+ def struct (self , struct : StructType , field_results : list [Writer ]) -> Writer :
150147 return StructWriter (tuple ((pos , result ) for pos , result in enumerate (field_results )))
151148
152149 def field (self , field : NestedField , field_result : Writer ) -> Writer :
@@ -234,8 +231,8 @@ def resolve_writer(
234231def resolve_reader (
235232 file_schema : Schema | IcebergType ,
236233 read_schema : Schema | IcebergType ,
237- read_types : Dict [int , Callable [..., StructProtocol ]] = EMPTY_DICT ,
238- read_enums : Dict [int , Callable [..., Enum ]] = EMPTY_DICT ,
234+ read_types : dict [int , Callable [..., StructProtocol ]] = EMPTY_DICT ,
235+ read_enums : dict [int , Callable [..., Enum ]] = EMPTY_DICT ,
239236) -> Reader :
240237 """Resolve the file and read schema to produce a reader.
241238
@@ -274,12 +271,12 @@ class WriteSchemaResolver(PrimitiveWithPartnerVisitor[IcebergType, Writer]):
274271 def schema (self , file_schema : Schema , record_schema : IcebergType | None , result : Writer ) -> Writer :
275272 return result
276273
277- def struct (self , file_schema : StructType , record_struct : IcebergType | None , file_writers : List [Writer ]) -> Writer :
274+ def struct (self , file_schema : StructType , record_struct : IcebergType | None , file_writers : list [Writer ]) -> Writer :
278275 if not isinstance (record_struct , StructType ):
279276 raise ResolveError (f"File/write schema are not aligned for struct, got { record_struct } " )
280277
281- record_struct_positions : Dict [int , int ] = {field .field_id : pos for pos , field in enumerate (record_struct .fields )}
282- results : List [ Tuple [int | None , Writer ]] = []
278+ record_struct_positions : dict [int , int ] = {field .field_id : pos for pos , field in enumerate (record_struct .fields )}
279+ results : list [ tuple [int | None , Writer ]] = []
283280
284281 for writer , file_field in zip (file_writers , file_schema .fields , strict = True ):
285282 if file_field .field_id in record_struct_positions :
@@ -367,14 +364,14 @@ def visit_unknown(self, unknown_type: UnknownType, partner: IcebergType | None)
367364
368365class ReadSchemaResolver (PrimitiveWithPartnerVisitor [IcebergType , Reader ]):
369366 __slots__ = ("read_types" , "read_enums" , "context" )
370- read_types : Dict [int , Callable [..., StructProtocol ]]
371- read_enums : Dict [int , Callable [..., Enum ]]
372- context : List [int ]
367+ read_types : dict [int , Callable [..., StructProtocol ]]
368+ read_enums : dict [int , Callable [..., Enum ]]
369+ context : list [int ]
373370
374371 def __init__ (
375372 self ,
376- read_types : Dict [int , Callable [..., StructProtocol ]] = EMPTY_DICT ,
377- read_enums : Dict [int , Callable [..., Enum ]] = EMPTY_DICT ,
373+ read_types : dict [int , Callable [..., StructProtocol ]] = EMPTY_DICT ,
374+ read_enums : dict [int , Callable [..., Enum ]] = EMPTY_DICT ,
378375 ) -> None :
379376 self .read_types = read_types
380377 self .read_enums = read_enums
@@ -389,7 +386,7 @@ def before_field(self, field: NestedField, field_partner: NestedField | None) ->
389386 def after_field (self , field : NestedField , field_partner : NestedField | None ) -> None :
390387 self .context .pop ()
391388
392- def struct (self , struct : StructType , expected_struct : IcebergType | None , field_readers : List [Reader ]) -> Reader :
389+ def struct (self , struct : StructType , expected_struct : IcebergType | None , field_readers : list [Reader ]) -> Reader :
393390 read_struct_id = self .context [STRUCT_ROOT ] if len (self .context ) > 0 else STRUCT_ROOT
394391 struct_callable = self .read_types .get (read_struct_id , Record )
395392
@@ -399,10 +396,10 @@ def struct(self, struct: StructType, expected_struct: IcebergType | None, field_
399396 if not isinstance (expected_struct , StructType ):
400397 raise ResolveError (f"File/read schema are not aligned for struct, got { expected_struct } " )
401398
402- expected_positions : Dict [int , int ] = {field .field_id : pos for pos , field in enumerate (expected_struct .fields )}
399+ expected_positions : dict [int , int ] = {field .field_id : pos for pos , field in enumerate (expected_struct .fields )}
403400
404401 # first, add readers for the file fields that must be in order
405- results : List [ Tuple [int | None , Reader ]] = [
402+ results : list [ tuple [int | None , Reader ]] = [
406403 (
407404 expected_positions .get (field .field_id ),
408405 # Check if we need to convert it to an Enum
0 commit comments