@@ -156,14 +156,18 @@ class ParsedLoadJobFileName(NamedTuple):
156156 file_id : str
157157 retry_count : int
158158 file_format : TJobFileFormat
159+ is_compressed : bool = False
159160
160161 def job_id (self ) -> str :
161162 """Unique identifier of the job"""
162163 return f"{ self .table_name } .{ self .file_id } .{ self .file_format } "
163164
164165 def file_name (self ) -> str :
165166 """A name of the file with the data to be loaded"""
166- return f"{ self .table_name } .{ self .file_id } .{ int (self .retry_count )} .{ self .file_format } "
167+ base_name = f"{ self .table_name } .{ self .file_id } .{ int (self .retry_count )} .{ self .file_format } "
168+ if self .is_compressed :
169+ return f"{ base_name } .gz"
170+ return base_name
167171
168172 def with_retry (self ) -> "ParsedLoadJobFileName" :
169173 """Returns a job with increased retry count"""
@@ -173,12 +177,18 @@ def with_retry(self) -> "ParsedLoadJobFileName":
173177 def parse (file_name : str ) -> "ParsedLoadJobFileName" :
174178 p = PurePath (file_name )
175179 parts = p .name .split ("." )
176- if len (parts ) != 4 :
177- raise TerminalValueError (parts )
178180
179- return ParsedLoadJobFileName (
180- parts [0 ], parts [1 ], int (parts [2 ]), cast (TJobFileFormat , parts [3 ])
181- )
181+ if len (parts ) == 4 :
182+ # Uncompressed
183+ return ParsedLoadJobFileName (
184+ parts [0 ], parts [1 ], int (parts [2 ]), cast (TJobFileFormat , parts [3 ]), False
185+ )
186+ elif len (parts ) == 5 and parts [4 ] == "gz" :
187+ return ParsedLoadJobFileName (
188+ parts [0 ], parts [1 ], int (parts [2 ]), cast (TJobFileFormat , parts [3 ]), True
189+ )
190+ else :
191+ raise TerminalValueError (parts )
182192
183193 @staticmethod
184194 def new_file_id () -> str :
0 commit comments