YM) d Z ddlZddlZddlZddlZddlmZ ddlmZm Z m Z mZmZm Z mZmZmZmZ ddlmZ ddlmZmZmZmZ ddlmZmZmZmZmZmZ erddl m!Z! ej" Z#d d ddd ddddZ$ d&dddee% de e e&f de%de&dee% dee% dee% de'd ee d!e'd"e eee f fd#Z( G d$ d% Z)dS )'zFA fake open() function replacement. See ``fake_filesystem`` for usage. N)S_ISDIR) OptionalUnionAnyTuplecastAnyStr TYPE_CHECKINGCallableIOList)helpers)FakePipeWrapperFakeFileWrapperFakeFileAnyFileWrapper) AnyStringis_called_from_skipped_moduleis_root PERM_READ PERM_WRITE _OpenModes)FakeFilesystem)TTFFFF)FFTTFF)FFTFTF)TTTFFF)FTTTFF)FTTFTF)FFTFFT)FTTFFT)rwazr+zw+za+xzx+r TF filesystemr skip_namesfilemode bufferingencodingerrorsnewlineclosefdopeneris_fake_open_codereturnc | s;t || j t j dk rt |||||||| S t | } ||||||||| S )zTRedirect the call to FakeFileOpen. See FakeFileOpen.call() for description. ) )r case_sensitivecheck_open_code)r is_case_sensitivesysversion_infoio_openFakeFileOpen)r r r! r" r# r$ r% r&