File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/pyfakefs/__pycache__/fake_io.cpython-311.pyc
�
�|oi9 � � � d Z ddlZddlZddlZddlmZ ddlmZmZm Z m
Z
mZmZm
Z
mZ ddlmZ ddlmZ ddlmZmZ erddlmZ G d � d
e� � Z G d� d� � Z G d
� de� � Zej dk rddlZ G d� d� � ZdS dS )zKUses :py:class:`FakeIoModule` to provide a
fake ``io`` module replacement.
� N)�Enum)�List�Optional�Callable�Union�Any�AnyStr�IO�
TYPE_CHECKING)�AnyFileWrapper)� fake_open)�IS_PYPY�is_called_from_skipped_module)�FakeFilesystemc � � e Zd ZdZdZdZdZdS )� PatchModezvDefines if patching shall be on, off, or in automatic mode.
Currently only used for `patch_open_code` option.
� � � N)�__name__�
__module__�__qualname__�__doc__�OFF�AUTO�ON� � �b/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/pyfakefs/fake_io.pyr r * s) � � � � � �� � �C��D�
�B�B�Br r c � � e Zd ZdZedee fd�� � Zdd�Z dde e
ef d
ededee dee dee de
dee de
de eee f fd�Zej dk rd� Zd� Zd S )�FakeIoModulez�Uses FakeFilesystem to provide a fake io module replacement.
You need a fake_filesystem to use this::
filesystem = fake_filesystem.FakeFilesystem()
my_io_module = fake_io.FakeIoModule(filesystem)
�returnc �V � dg} t j dk r| � d� � | S )zqReturn the list of patched function names. Used for patching
functions imported from the module.
�open�r � � open_code)�sys�version_info�append)�_dirs r �dirzFakeIoModule.dir= s0 � �
�x����v�%�%��K�K��$�$�$��r �
filesystemr c �: � || _ g | _ t | _ dS �zg
Args:
filesystem: FakeFilesystem used to provide file system information.
N)r- �
skip_names�io�
_io_module��selfr- s r �__init__zFakeIoModule.__init__G s � �
%���%'�������r �r���NTF�file�mode� buffering�encoding�errors�newline�closefd�opener�is_fake_open_codec
�H � t | j | j ||||||||| � � S )z\Redirect the call to FakeFileOpen.
See FakeFileOpen.call() for description.
)r
r- r0 )
r4 r8 r9 r: r; r<