1717 ``OperationalError`` here.
1818
1919Local missing transfer files use the built-in ``FileNotFoundError`` class;
20- the original OS error code is preserved when available. The ``filename``
21- attribute is unavailable .
20+ the original OS error code and requested local filename are preserved
21+ when available .
2222
2323These primitives live in their own module so both ``client.py``
2424(which orchestrates PyO3 calls) and ``result_set.py`` (which calls
@@ -163,13 +163,14 @@ def reraise_kernel_error(
163163 }
164164 message = getattr (exc , "message" , str (exc ))
165165 os_error_code = getattr (exc , "os_error_code" , None )
166+ os_error_filename = getattr (exc , "os_error_filename" , None )
166167 file_error_args : tuple
167168 if os_error_code is None :
168169 file_error_args = (message ,)
169170 elif os .name == "nt" :
170- file_error_args = (0 , message , None , os_error_code )
171+ file_error_args = (0 , message , os_error_filename , os_error_code )
171172 else :
172- file_error_args = (os_error_code , message )
173+ file_error_args = (os_error_code , message , os_error_filename )
173174 new : Union [Error , OSError ]
174175 # Local missing files have no HTTP status; remote missing files carry 404.
175176 if (
@@ -192,6 +193,7 @@ def reraise_kernel_error(
192193 "error_code" ,
193194 "vendor_code" ,
194195 "os_error_code" ,
196+ "os_error_filename" ,
195197 "http_status" ,
196198 "retryable" ,
197199 "query_id" ,
@@ -211,7 +213,7 @@ def wrap_kernel_exception(what: str, exc: BaseException) -> "Union[Error, OSErro
211213
212214 - ``KernelError`` → mapped class with structured attrs forwarded.
213215 A local missing transfer file maps to ``FileNotFoundError`` with
214- its original OS error code when available, without `` filename`` .
216+ its original OS error code and requested filename when available .
215217 - Already-mapped PEP 249 or local transfer errors → passed through
216218 unchanged so nested callers preserve their class and attributes.
217219 - Anything else (``TypeError`` / ``ValueError`` / etc. from PyO3
0 commit comments