� <��g�;����ddlZddlZddlZddlZddlmZddlZddlZddl Z ddl m Z ddl m Z ddlmZddlmZmZejd��ZGd�de ��Zd �Zd �ZGd �d ej��ZdS) �N)�AbstractFileSystem)�compr)�get_compression)� isfilelike�stringify_pathz fsspec.localc���eZdZdZdZdZdZd%�fd� Zed���Z d&d�Z d%d �Z d �Z d%d �Z d �Zd �Zd�Zd�Zd�Zd'd�Zd'd�Zd�Zd�Zd�Zdefd�Zd�Zd(d�Zd�Zd)d�Zd&d�Zd�Zd �Z e!d!���Z"e!d"���Z#d#�Z$d$�Z%�xZ&S)*�LocalFileSystemaInterface to files on local storage Parameters ---------- auto_mkdir: bool Whether, when opening a file, the directory containing it should be created (if it doesn't already exist). This is assumed by pyarrow code. �/)�file�localTFc �H��t��jdi|��||_dS)N�)�super�__init__� auto_mkdir)�selfr�kwargs� __class__s ��l/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/fsspec/implementations/local.pyrzLocalFileSystem.__init__!s+��������"�"�6�"�"�"�$�����c��dS)Nr r�rs r�fsidzLocalFileSystem.fsid%s���wrc ���|�|��}|�|��rt|���|r|�|d���dSt j|fi|��dS�NT��exist_ok)�_strip_protocol�exists�FileExistsError�makedirs�os�mkdir)r�path�create_parentsrs rr#zLocalFileSystem.mkdir)sy���#�#�D�)�)�� �;�;�t� � � (�!�$�'�'� '� � %� �M�M�$��M� .� .� .� .� .� �H�T� $� $�V� $� $� $� $� $rc�\�|�|��}tj||���dS)Nr)rr"r!)rr$rs rr!zLocalFileSystem.makedirs2s0���#�#�D�)�)�� � �D�8�,�,�,�,�,�,rc�X�|�|��}tj|��dS�N)rr"�rmdir�rr$s rr)zLocalFileSystem.rmdir6s&���#�#�D�)�)�� �������rc �p�|�|��}|�|��}|ddkrntj|��5}g}|D];} |�|�|�����,#t $rY�8wxYw ddd��n #1swxYwYn|g}|s d�|D��S|S)N�type� directoryc��g|] }|d�� S)�namer)�.0�is r� <listcomp>z&LocalFileSystem.ls.<locals>.<listcomp>Is��-�-�-�!�A�f�I�-�-�-r)r�infor"�scandir�append�FileNotFoundError)rr$�detailrr3�it�infos�fs r�lszLocalFileSystem.ls:s���#�#�D�)�)���y�y����� ��<�;� &� &���D�!�!� �R������A��� � �T�Y�Y�q�\�\�2�2�2�2��,����������� � � � � � � � � � � ���� � � � ���F�E�� .�-�-�u�-�-�-� -�� s6� B�(A<�;B�< B �B�B � B�B� Bc �\�t|tj��r�|�d���}|���}|�d���rd}n|�d���rd}nd}|j}|r1 |�d���}|j}n#t$rd}YnwxYw|� |j ��}n�|� |��}tj|d���}tj |j ��}|rtj|d���}|j}tj |j ��rd}ntj|j ��rd}nd}||||j|d�}d D]} t!|d | ����|| <�|rtj|��|d <|S) NF)�follow_symlinksr-r �otherTr)r/�sizer,�created�islink)�mode�uid�gid�mtime�ino�nlink�st_� destination)� isinstancer"�DirEntry�stat� is_symlink�is_dir�is_file�st_size�OSErrorrr$�S_ISLNK�st_mode�S_ISDIR�S_ISREG�st_ctime�getattr�readlink) rr$r�out�link�tr?�out2�result�fields rr3zLocalFileSystem.infoLs��� �d�B�K� (� (� ��)�)�E�)�2�2�C��?�?�$�$�D��{�{�5�{�1�1� �������e��4�4� �������;�D�� ���9�9�T�9�:�:�D��<�D�D�������D�D�D������'�'�� �2�2�D�D��'�'��-�-�D��'�$��6�6�6�C��<�� �,�,�D�� :��g�d�D�9�9�9���;�D��|�C�K�(�(� ������c�k�*�*� ����������|��  � ��E� 8� 8�E�#�C��u���7�7�F�5�M�M� � 6�$&�K��$5�$5�F�=� !�� s�B!�! B0�/B0c �*�tj|��Sr()�osp�lexists)rr$rs rrazLocalFileSystem.lexists{s���{�4� � � rc ��|�|��}|�|��}|jr*|�|�|��d���|�|��rt j||��dS|�|��r|�|d���dSt|���r) rrr!�_parent�isfile�shutil�copyfile�isdir�mkdirsr6�r�path1�path2rs r�cp_filezLocalFileSystem.cp_file~s����$�$�U�+�+���$�$�U�+�+�� �?� >� �M�M�$�,�,�u�-�-��M� =� =� =� �;�;�u� � � +� �O�E�5� )� )� )� )� )� �Z�Z�� � � +� �K�K���K� -� -� -� -� -�#�E�*�*� *rc�j�|�|��}tj�|��Sr()rr"r$rdr*s rrdzLocalFileSystem.isfile�s)���#�#�D�)�)���w�~�~�d�#�#�#rc�j�|�|��}tj�|��Sr()rr"r$rgr*s rrgzLocalFileSystem.isdir�s)���#�#�D�)�)���w�}�}�T�"�"�"rNc ��t|��r@t|d��5}tj||��ddd��dS#1swxYwYdS|j||fi|��S)N�rb)r�openre� copyfileobjrl)rrjrk�callbackrr:s r�get_filezLocalFileSystem.get_file�s��� �e� � � 8��e�T�"�"� -�a��"�1�e�,�,�,� -� -� -� -� -� -� -� -� -� -� -� -���� -� -� -� -� -� -� �4�<��u�7�7��7�7� 7s�A�A� Ac � �|j||fi|��Sr()rl)rrjrkrsrs r�put_filezLocalFileSystem.put_file�s���t�|�E�5�3�3�F�3�3�3rc ��|�|��}|�|��}tj||��dSr()rre�moveris r�mvzLocalFileSystem.mv�s@���$�$�U�+�+���$�$�U�+�+��� �E�5�!�!�!�!�!rc ��|�|��}|�|��}tj||fi|��dSr()rr"rZ�r�src�dstrs rrZzLocalFileSystem.link�sH���"�"�3�'�'���"�"�3�'�'�� ���S�#�#�F�#�#�#�#�#rc ��|�|��}|�|��}tj||fi|��dSr()rr"�symlinkr{s rrzLocalFileSystem.symlink�sH���"�"�3�'�'���"�"�3�'�'�� � �3��&�&�v�&�&�&�&�&r�returnc�f�tj�|�|����Sr()r"r$rArr*s rrAzLocalFileSystem.islink�s$���w�~�~�d�2�2�4�8�8�9�9�9rc�T�tj|�|����dSr()r"�removerr*s r�rm_filezLocalFileSystem.rm_file�s&�� � �$�&�&�t�,�,�-�-�-�-�-rc�x�t|t��s|g}|D]�}|�|��}|�|��r^|st d���t j|��tj��krt d���tj |����tj |����dS)Nz+Cannot delete directory, set recursive=Truez'Cannot delete current working directory) rJ�listrrg� ValueErrorr`�abspathr"�getcwdre�rmtreer�)rr$� recursive�maxdepth�ps r�rmzLocalFileSystem.rm�s����$��%�%� ��6�D�� � �A��$�$�Q�'�'�A��z�z�!�}�}� � �T�$�%R�S�S�S��;�q�>�>�R�Y�[�[�0�0�$�%N�O�O�O�� �a� � � � �� �!� � � � � � rc�6�|�|��}d|��S)N�file://)r)rr/s r�unstrip_protocolz LocalFileSystem.unstrip_protocol�s#���#�#�D�)�)������rrpc ��|�|��}|jr.d|vr*|�|�|��d���t ||fd|i|��S)N�wTr�fs)rrr!rc�LocalFileOpener)rr$rB� block_sizers r�_openzLocalFileSystem._open�sf���#�#�D�)�)�� �?� =�s�d�{�{� �M�M�$�,�,�t�,�,�t�M� <� <� <��t�T�=�=�d�=�f�=�=�=rc �^�|�|��}|jr*|�|�|��d���|�|��rt j|d��n"t|d�����|rt j |d��dSdS)NTr�ar) rrr!rcrr"�utimerq�close�truncate)rr$r�rs r�touchzLocalFileSystem.touch�s����#�#�D�)�)�� �?� =� �M�M�$�,�,�t�,�,�t�M� <� <� <� �;�;�t� � � $� �H�T�4� � � � � ��s�O�O� !� !� #� #� #� � !� �K��a� � � � � � !� !rc��|�|���}tj�|dtjj���S)N�r$r@��tz�r3�datetime� fromtimestamp�timezone�utc�rr$r3s rr@zLocalFileSystem.created�sD���y�y�d�y�#�#��� �.�.� ��O�� 1� 5�/� � � rc��|�|���}tj�|dtjj���S)Nr�rEr�r�r�s r�modifiedzLocalFileSystem.modified�s;���y�y�d�y�#�#��� �.�.�t�G�}��AR�AV�.�W�W�Wrc��|�|��}tjdkr|�dd��dpdS|�dd��d}t |��dkr|dd�dkr |ddzS|S)Nr �r���:�:/)rr"�sep�rsplit�len)�clsr$�path_s rrczLocalFileSystem._parent�s����"�"�4�(�(�� �6�S�=�=��;�;�s�A�&�&�q�)�0�S� 0��K�K��Q�'�'��*�E��5�z�z�Q�����1��:��$�$� ��8�d�?�*��Lrc���t|��}|�d��r |dd�}n_|�d��r |dd�}n?|�d��r |dd�}n|�d��r |dd�}t|��}tjd kr�|d d �d kr|dd �|d d�}}ne|dd �d krU|�d d ��x}dks|�d |d z��x}dkr|d}}n|d|�||d�}}nd}|�d ��p|j}||zS|�d ��p|jS)Nr��zfile:�zlocal://�zlocal:�r r�r�r��//������)r� startswith�make_path_posixr"r��find�rstrip� root_marker)r�r$�drive�index1�index2s rrzLocalFileSystem._strip_protocol�s����d�#�#�� �?�?�9� %� %� �����8�D�D� �_�_�W� %� %� �����8�D�D� �_�_�Z� (� (� �����8�D�D� �_�_�X� &� &� �����8�D��t�$�$�� �6�S�=�=��A�a�C�y�C���#�2�A�2�h��Q�R�R��t����b�q�b��T�!�!�#�i�i��Q�/�/�/�F�B�6�6�"�i�i��V�a�Z�8�8�8�F��;�;�#'��4�E�E�"&�w��w�-��f�g�g��4�E�E����;�;�s�#�#�6�s��D��4�<� ��;�;�s�#�#�6�s�� 6rc��dS�NTrrs r� _isfilestorezLocalFileSystem._isfilestores ���trc�J�t|��}tj||��Sr()rr"�chmod)rr$rBs rr�zLocalFileSystem.chmods!���d�#�#���x��d�#�#�#r)F)Tr()FN)rpN)'�__name__� __module__� __qualname__�__doc__r��protocol� local_filer�propertyrr#r!r)r;r3rarlrdrgrtrvryrZr�boolrAr�r�r�r�r�r@r�� classmethodrcrr�r�� __classcell__)rs@rr r sJ����������K��H��J�%�%�%�%�%�%�����X��%�%�%�%�-�-�-�-��������$-�-�-�^!�!�!� +� +� +�$�$�$�#�#�#�8�8�8�8�4�4�4�4�"�"�"� $�$�$� '�'�'� :�d�:�:�:�:�.�.�.� � � � � � � �>�>�>�>� !� !� !� !� � � � X�X�X�� � ��[� ��$7�$7��[�$7�L��� $�$�$�$�$�$�$rr c�Z�t|t��s{t|tttf��r"t |��d�|D����St |��}t|t��std|�d����tj dkr�|� d��r|S|� d��rtj |��S|� d��r |dd�}n|d krd }tj ���d|��S|d d �dkr|dd �dkr |d d�}|d d�dkr6t|��d kr |d dzS|�dd��}|S|d d �dkr!t!tj |����S|� d��r!d|dd��dd��zS|� d��rE|�dd��}tjtj ����d �|��S|�dd��}|� d��r |dd�}n|d krd }t!tj �����d|��S)z-Make path generic and absolute for current OSc3�4K�|]}t|��V��dSr()r�)r0r�s r� <genexpr>z"make_path_posix.<locals>.<genexpr>%s*����?�?�Q�o�a�0�0�?�?�?�?�?�?rzcould not convert z to stringr �~z./r�N�.r�rr�r�r�r��\)z\\r�r�)r�r )rJ�strr��set�tupler,r� TypeErrorr"r�r�r`� expanduserr�r��replacer�� splitdriver�s rr�r�!s��� �d�C� � �I� �d�T�3��.� /� /� I��4��:�:�?�?�$�?�?�?�?�?� ?�!�$�'�'�D��d�C�(�(� I�� G�T� G� G� G�H�H�H� �v��}�}� �?�?�3� � � ��K� �_�_�S� !� !� ��>�$�'�'� '� �_�_�T� "� "� �����8�D�D� �S�[�[��D��)�+�+�&�&��&�&�&� ��!��9�� � ��Q�q�S� �S� 0� 0�����8�D� ��!��9�� � ��4�y�y�A�~�~��A�w��~�%��<�<��c�*�*�D��K� �!�A�#�Y�#� � �"�3�>�$�#7�#7�8�8� 8� �_�_�^� ,� ,� <��$�q�r�r�(�*�*�4��5�5�5� 5� �_�_�[� )� )� <��<�<��c�*�*�D��n�R�Y�[�[�1�1�!�4�<�d�<�<� <��<�<��c�*�*�D����t�$�$� ��A�B�B�x���������%�b�i�k�k�2�2�;�;�T�;�;� ;rc��|�tj��p,tjduo|�tj��S)z�Return True if the path ends with a path separator. A forward slash is always considered a path separator, even on Operating Systems that normally use a backslash. N)�endswithr"r��altsepr�s r� trailing_sepr�Ts7�� �=�=��� � � X�R�Y�d�%:�%W�t�}�}�R�Y�?W�?W�Xrc���eZdZ dd�Zd�Zd�Zd�Zd�Zd�Zd �Z d e fd �Z d e fd �Z d �Z d�Zd�Zd�Zd�Zd�Zd�Zd�Zdd efd�Zed���Zd�Zdd�Zd�Zd�Zd�Zd�ZdS) r�TNc ���t�d|��||_||_||_d|_||_t||��|_tj |_ |� ��dS)Nz open file: %s) �logger�debugr$rBr�r:� autocommitr� compression�io�DEFAULT_BUFFER_SIZE� blocksizer�)rr$rBr�r�r�rs rrzLocalFileOpener.__init__ash�� � � �_�d�+�+�+��� ��� �������$���*�4��=�=����/��� � � � � � � � rc�B�|j� |jj�r|js d|jvrVt |j|j���|_|jr.t|j}||j|j���|_nLtj ��\}}tj |��||_ t ||j���|_d|jvrO|j� dd��|_|j� d��|j|j_dSdSdS)Nr��rBrr�)r:�closedr�rBrqr$r�r�tempfile�mkstempr"r��temp�seekr?)r�compressr1r/s rr�zLocalFileOpener._openns�� �6�>�T�V�]�>��� 4�#�T�Y�"6�"6��d�i�d�i�8�8�8����#�>�$�T�%5�6�H�%�X�d�f�4�9�=�=�=�D�F��#�*�,�,���4���� � � � �� ��d���3�3�3����$�)�#�#� �F�K�K��1�-�-�� ��� � �A����"�i��� � � � �>�$�#rc��d|jvrt�|���|j�|��|j�||z ��S�N�r)rBr�r�r:r��read)r�start�ends r� _fetch_rangezLocalFileOpener._fetch_range�sN�� �d�i� � �� � � � � � � � �� � �E�����v�{�{�3��;�'�'�'rc���d|_|�dd��}|j�|��d|dvr7d|_|���|j�|��dSdS)N�locr�rB)r:�pop�__dict__�updater�r�)r�stater�s r� __setstate__zLocalFileOpener.__setstate__�sw������i�i��t�$�$�� � ���U�#�#�#� �%��-� � ��D�F� �J�J�L�L�L� �F�K�K�� � � � � � � rc���|j���}|�d��d|jvr|j���|d<n|jjstd���|S)Nr:r�r�z+Cannot serialise open write-mode local file)r�copyr�rBr:�tellr�r�)r�ds r� __getstate__zLocalFileOpener.__getstate__�sg�� �M� � � � �� ���c� � � � �$�)� � ��v�{�{�}�}�A�e�H�H��6�=� P� �!N�O�O�O��rc�p�|jrtd���tj|j|j��dS)Nz0Can only commit if not already set to autocommit)r�� RuntimeErrorrerxr�r$rs r�commitzLocalFileOpener.commit�s8�� �?� S��Q�R�R� R�� �D�I�t�y�)�)�)�)�)rc�d�|jrtd���tj|j��dS)Nz#Cannot discard if set to autocommit)r�r r"r�r�rs r�discardzLocalFileOpener.discard�s4�� �?� F��D�E�E� E� � �$�)�����rr�c��dSr�rrs r�readablezLocalFileOpener.readable�s���trc��d|jvSr�r�rs r�writablezLocalFileOpener.writable�s���$�)�#�#rc�&�|jj|i|��Sr()r:r��r�argsrs rr�zLocalFileOpener.read�����t�v�{�D�+�F�+�+�+rc�&�|jj|i|��Sr()r:�writers rrzLocalFileOpener.write�s���t�v�|�T�,�V�,�,�,rc�&�|jj|i|��Sr()r:rrs rrzLocalFileOpener.tell�rrc�&�|jj|i|��Sr()r:r�rs rr�zLocalFileOpener.seek�rrc�&�|jj|i|��Sr()r:�seekablers rrzLocalFileOpener.seekable�����t�v���/��/�/�/rc�&�|jj|i|��Sr()r:�readliners rrzLocalFileOpener.readline�rrc�&�|jj|i|��Sr()r:� readlinesrs rr zLocalFileOpener.readlines�s���t�v���0��0�0�0rc�4�|j���Sr()r:r�rs rr�zLocalFileOpener.close�s���v�|�|�~�~�rc�6�|j�|��Sr()r:r�)rr?s rr�zLocalFileOpener.truncate�s���v���t�$�$�$rc��|jjSr()r:r�rs rr�zLocalFileOpener.closed�s ���v�}�rc�4�|j���Sr()�raw�filenors rr&zLocalFileOpener.fileno�s���x��� � � rc�8�|j���dSr()r:�flushrs rr(zLocalFileOpener.flush�s�� �� � �����rc�4�|j���Sr()r:�__iter__rs rr*zLocalFileOpener.__iter__�s���v��� � � rc�,�t|j|��Sr()rWr:)r�items r� __getattr__zLocalFileOpener.__getattr__�s���t�v�t�$�$�$rc��d|_|Sr�)� _incontextrs r� __enter__zLocalFileOpener.__enter__�s������ rc�L�d|_|j�|||��dS)NF)r/r:�__exit__)r�exc_type� exc_value� tracebacks rr2zLocalFileOpener.__exit__�s'����� �����)�Y�7�7�7�7�7r)TNNr()r�N)r�r�r�rr�r�rrr r r�rrr�rrr�rrr r��intr�r�r�r&r(r*r-r0r2rrrr�r�`s�������@D� � � � �(�(�(�$(�(�(�������*�*�*� ��� �$�����$�$�$�$�$�$�,�,�,�-�-�-�,�,�,�,�,�,�0�0�0�0�0�0�1�1�1����%�%�S�%�%�%�%�����X��!�!�!�����!�!�!�%�%�%����8�8�8�8�8rr�)r�r��loggingr"�os.pathr$r`rerLr��fsspecr�fsspec.compressionr� fsspec.corer� fsspec.utilsrr� getLoggerr�r r�r��IOBaser�rrr�<module>r?sL������ � � � ����� � � � ������� � � � � � � � �����%�%�%�%�%�%�$�$�$�$�$�$�'�'�'�'�'�'�3�3�3�3�3�3�3�3� �� �>� *� *��L$�L$�L$�L$�L$�(�L$�L$�L$�^0<�0<�0<�f Y� Y� Y�|8�|8�|8�|8�|8�b�i�|8�|8�|8�|8�|8r
Memory