403Webshell
Server IP : 35.80.110.71  /  Your IP : 216.73.216.221
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/fs/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/fs/__pycache__/multifs.cpython-312.pyc
�

��ob3��`�dZddlmZmZmZddlZddlmZmZddl	m
Z
ddlmZddl
mZdd	lmZdd
lmZddlmZddlmZmZej0rHdd
lmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#ddl$m%Z%ddl&m'Z'm(Z(ddl)m*Z*ddl+m,Z,ejZdd��Z.edddg�Z/Gd�de�Z0y)z2Manage several filesystems through a single view.
�)�absolute_import�print_function�unicode_literalsN)�OrderedDict�
namedtuple)�
itemgetter)�	text_type�)�errors)�FS)�check_writable)�open_fs)�abspath�normpath)�IO�Any�BinaryIO�
Collection�Iterator�List�MutableMapping�
MutableSet�Optional�Text�Tuple)�ResourceType)�Info�RawInfo)�Permissions)�SubFS�M�MultiFS)�bound�_PrioritizedFS�priority�fsc�D��eZdZdZdddd�Zd*�fd�	Zd�Zd�Zd+d�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd,d�Zd�Zd-d�Zd�Z		d.d�Zd/d�Zd�Zd�Z		d0d�Zd�Zd-d�Zd1d�Zd�Zd�Zd�Zd2d�Zd�Zd2d �Z d!�Z!d"�Z"d#�Z#�fd$�Z$		d.d%�Z%					d3d&�Z&d-d'�Z'd(�Z(			d4d)�Z)�xZ*S)5r"z�A filesystem that delegates to a sequence of other filesystems.

    Operations on the MultiFS will try each 'child' filesystem in order,
    until it succeeds. In effect, creating a filesystem that combines
    the files and dirs of its children.

    TF)�virtual�	read_only�case_insensitivec���tt|��||_d|_d|_d|_i|_d|_d|_	y)z�Create a new MultiFS.

        Arguments:
            auto_close (bool): If `True` (the default), the child
                filesystems will be closed when `MultiFS` is closed.

        NrF)
�superr"�__init__�_auto_close�write_fs�_write_fs_name�_sort_index�_filesystems�_fs_sequence�_closed)�self�
auto_close�	__class__s  ��,/usr/lib/python3/dist-packages/fs/multifs.pyr-zMultiFS.__init__7sH���	�g�t�%�'�%�����
�"��������� ������c��|jryy)Nz	MultiFS()zMultiFS(auto_close=False))r.�r5s r8�__repr__zMultiFS.__repr__Js������.r9c��y)Nz	<multifs>�r;s r8�__str__zMultiFS.__str__Qs��r9c�(�t|t�rt|�}t|t�st	d��t||jf|��|j|<|xjdz
c_|j�|r||_	||_
yy)a�Add a filesystem to the MultiFS.

        Arguments:
            name (str): A unique name to refer to the filesystem being
                added.
            fs (FS or str): The filesystem (instance or URL) to add.
            write (bool): If this value is True, then the ``fs`` will
                be used as the writeable FS (defaults to False).
            priority (int): An integer that denotes the priority of the
                filesystem being added. Filesystems will be searched in
                descending priority order and then by the reverse order
                they were added. So by default, the most recently added
                filesystem will be looked at first.

        z,fs argument should be an FS object or FS URL)r%r&r
N)�
isinstancer	rr�	TypeErrorr$r1r2�_resortr/r0)r5�namer&�writer%s     r8�add_fszMultiFS.add_fsUs���"�b�)�$����B��"�b�!��J�K�K�"0��� 0� 0�1�b�#
����$��	
���A���������D�M�"&�D��r9c�4�|j|jS)a+Get a filesystem from its name.

        Arguments:
            name (str): The name of a filesystem previously added.

        Returns:
            FS: the filesystem added as ``name`` previously.

        Raises:
            KeyError: If no filesystem with given ``name`` could be found.

        )r2r&)r5rDs  r8�get_fszMultiFS.get_fsvs��� � ��&�)�)�)r9c��d|_y)z0Force `iterate_fs` to re-sort on next reference.N)r3r;s r8rCzMultiFS._resort�s��!��r9c���|j�Nt|jj�t	d�d��D���cgc]\}\}}||f��c}}}|_t|j�Scc}}}w)z7Get iterator that returns (name, fs) in priority order.r
T)�key�reverse)r3�sortedr2�itemsr�iter)r5rD�_orderr&s    r8�
iterate_fszMultiFS.iterate_fs�su�����$�+1��%�%�+�+�-�:�a�=�$�+�!�!�&�D�,�6�2��r�
�!�D���D�%�%�&�&��
!s�A0c�^�|j�D]\}}|j|�s�|cSy)z(Get a filesystem which has a given path.N)rQ�exists)r5�path�_namer&s    r8�	_delegatezMultiFS._delegate�s3�����*�	�I�E�2��y�y����	�	�r9c�V�|j|�}|�tj|��|S)z9Check that there is a filesystem with the given ``path``.)rVr�ResourceNotFound�r5rTr&s   r8�_delegate_requiredzMultiFS._delegate_required�s-���^�^�D�
!��
�:��)�)�$�/�/��	r9c�\�|j�tj|��|jS)z!Check that ``path`` is writeable.)r/r�ResourceReadOnly)r5rTs  r8�_writable_requiredzMultiFS._writable_required�s)���=�=� ��)�)�$�/�/��}�}�r9c��t|�r|j|jfS|j�D]\}}|j	|�s�||fcSy)z�Get a tuple of (name, fs) that the given path would map to.

        Arguments:
            path (str): A path on the filesystem.
            mode (str): An `io.open` mode.

        �NN)r
r0r/rQrS)r5rT�moderDr&s     r8�whichz
MultiFS.which�sT���$���&�&��
�
�5�5����)�	 �H�D�"��y�y����R�x��	 �r9c�F�d|_|jr_	|jj�D]\}}|j	��	|jj�|j
�yy#|jj�|j
�wxYw)NT)r4r.r2�values�close�clearrC)r5rPr&s   r8rdz
MultiFS.close�s���������
�"&�"3�"3�":�":�"<��J�F�B��H�H�J���!�!�'�'�)�����
��
�!�!�'�'�)�����s�2A4�4,B c���|j�|xsd}|j|�}|�tj|��t	t|��}|j
||��}|S)Nr>)�
namespaces)�checkrVrrXrr�getinfo)r5rTrgr&�_path�infos      r8rizMultiFS.getinfo�s^���
�
���%�2�
�
�^�^�D�
!��
�:��)�)�$�/�/�����'���z�z�%�J�z�7���r9c�@�|j�g}d}|j�D](\}}	|j|j|��d}�*|st	j
|��t
tj|��}|S#tj
$rY�wwxYw)NFT)	rhrQ�extend�listdirrrX�listr�fromkeys)r5rT�	directoryrSrU�_fss      r8rnzMultiFS.listdir�s����
�
���	����/�/�+�	�J�E�3�
�� � ����T�!2�3���
	���)�)�$�/�/���-�-�i�8�9�	�����*�*�
��
�s� B�B�Bc�l�|j�|j|�}|j|||��S�N)�permissions�recreate)rhr]�makedir�r5rTrurvr/s     r8rwzMultiFS.makedir�s5��	
�
�
���*�*�4�0������+���Q�Qr9c��|j�t|�r|j|�}n|j|�}|j|f||d�|��S)N)r`�	buffering)rhr
r]rZ�openbin)r5rTr`rz�optionsrrs      r8r{zMultiFS.openbin�sP���
�
���$���)�)�$�/�C��)�)�$�/�C��s�{�{�4�K�d�i�K�7�K�Kr9c�f�|j�|j|�}|j|�S�N)rhrZ�removerYs   r8rzMultiFS.remove�s)���
�
��
�
$�
$�T�
*���y�y���r9c�f�|j�|j|�}|j|�Sr~)rhrZ�	removedirrYs   r8r�zMultiFS.removedir�s*���
�
��
�
$�
$�T�
*���|�|�D�!�!r9c#�hK�|j�t�}d}|j�D]O\}}	|j|||��D]0}|j|vs�|��|j|j��2d}�Q|st
j|��y#tj$rY�wxYw�w)NF)rg�pageT)rh�setrQ�scandirrD�addrrX)	r5rTrgr��seenrSrUr&rks	         r8r�zMultiFS.scandirs�����	
�
�
���u�������*�	�I�E�2�
��J�J�t�
��J�N�,�D��y�y��,�"�
�������+�,���
	���)�)�$�/�/����*�*�
��
�s.�3B2�%B�#B�?B2�B/�,B2�.B/�/B2c��|j�|j|�}|�tj|��|j	|�Sr~)rhrVrrX�	readbytesrYs   r8r�zMultiFS.readbytess>���
�
��
�^�^�D�
!��
�:��)�)�$�/�/��|�|�D�!�!r9c�P�|j|�}|j||fd|i|��S�N�
chunk_size)rZ�download)r5rT�filer�r|r&s      r8r�zMultiFS.download$s/��
�
$�
$�T�
*���r�{�{�4��H�*�H��H�Hr9c�n�|j�|j|�}|j||||��S�N)�encodingr�newline)rhrZ�readtext)r5rTr�rr�r&s      r8r�zMultiFS.readtext)s2���
�
��
�
$�
$�T�
*���{�{�4�(�6�7�{�S�Sr9c�f�|j�|j|�}|j|�Sr~)rhrZ�getsizerYs   r8r�zMultiFS.getsize/�*���
�
��
�
$�
$�T�
*���z�z�$��r9c�f�|j�|j|�}|j|�Sr~)rhrZ�
getsyspathrYs   r8r�zMultiFS.getsyspath5s*���
�
��
�
$�
$�T�
*���}�}�T�"�"r9c�f�|j�|j|�}|j|�Sr~)rhrZ�gettyperYs   r8r�zMultiFS.gettype;r�r9c�j�|j�|j|�}|j||��S�N)�purpose)rhrZ�geturl�r5rTr�r&s    r8r�zMultiFS.geturlAs.���
�
��
�
$�
$�T�
*���y�y��w�y�/�/r9c�r�|j�|j|�}|duxr|j|�Sr~)rhrV�
hassyspathrYs   r8r�zMultiFS.hassyspathGs1���
�
��
�^�^�D�
!����~�5�"�-�-��"5�5r9c�v�|j�|j|�}|duxr|j||��Sr�)rhrV�hasurlr�s    r8r�zMultiFS.hasurlMs5���
�
��
�^�^�D�
!����~�B�"�)�)�D�'�)�"B�Br9c�r�|j�|j|�}|duxr|j|�Sr~)rhrV�isdirrYs   r8r�z
MultiFS.isdirSs0���
�
��
�^�^�D�
!����~�0�"�(�(�4�.�0r9c�r�|j�|j|�}|duxr|j|�Sr~)rhrV�isfilerYs   r8r�zMultiFS.isfileYs0���
�
��
�^�^�D�
!����~�1�"�)�)�D�/�1r9c�h�|j�|j|�}|j||�Sr~)rhr]�setinfo)r5rTrkr/s    r8r�zMultiFS.setinfo_s.���
�
���*�*�4�0������d�+�+r9c����|j�|j�|jj|�ntt|�|�tt
|��}|Sr~)rhr/�validatepathr,r"rr)r5rTr7s  �r8r�zMultiFS.validatepathesJ����
�
���=�=�$��M�M�&�&�t�,��'�4�-�d�3��x��~�&���r9c�l�|j�|j|�}|j|||��Srt)rhr]�makedirsrxs     r8r�zMultiFS.makedirsos5��	
�
�
���*�*�4�0��� � ��;�� �R�Rr9c	��|j�t|�r|j|�}n|j|�}|j|f|||||d�|��S)N)r`rzr�rr�)rhr
r]rZ�open)	r5rTr`rzr�rr��kwargsrrs	         r8r�zMultiFS.openzsi��	
�
�
���$���)�)�$�/�C��)�)�$�/�C��s�x�x��
������

��
�	
r9c�N�|j|�j||fd|i|��yr�)r]�upload)r5rTr�r�r|s     r8r�zMultiFS.upload�s2��,�����%�,�,��$�	
�#-�	
�18�	
r9c�F�|j|�j||�yr~)r]�
writebytes)r5rT�contentss   r8r�zMultiFS.writebytes�s������%�0�0��x�@r9c�P�|j|�}|j|||||��Sr�)r]�	writetext)r5rTr�r�rr�r/s       r8r�zMultiFS.writetext�s7���*�*�4�0���!�!��(�X�f�g�"�
�	
r9)T)Fr)�rr~)NF)r����r_)NN�)r�)r�r�NNr�)zutf-8Nr�)+�__name__�
__module__�__qualname__�__doc__�_metar-r<r?rFrHrCrQrVrZr]rardrirnrwr{rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��
__classcell__)r7s@r8r"r",s�����5�e�L�E��&/��'�B*� !�

'����� 	�	��(��		R�L��"��
�	0�."�I�
T� �#� �0�6�C�1�2�,����		S������
�4
�A����

r9)1r��
__future__rrr�typing�collectionsrr�operatorr�sixr	r�r�baserr`r
�openerrrTrr�
TYPE_CHECKINGrrrrrrrrrrr�enumsrrkrrrur�subfsr �TypeVarr!r$r"r>r9r8�<module>r�s����I�H�
�/����� ��#�	�������$�#�(������s�)�,�A��,�z�4�.@�A��~
�b�~
r9

Youez - 2016 - github.com/yon3zu
LinuXploit