| Server IP : 217.160.0.135 / Your IP : 216.73.216.90 Web Server : Apache System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64 User : sws1074145052 ( 1074145052) PHP Version : 8.3.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /lib/python3/dist-packages/__pycache__/ |
Upload File : |
�
)h � � � d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z e
Zd� Zd� Z
G d� d� � Z G d� d� � ZdS ) � )�divisionNc �H � t j t | � � dd� � S )a2
Given a path with elements separated by
posixpath.sep, generate all parents of that path.
>>> list(_parents('b/d'))
['b']
>>> list(_parents('/b/d/'))
['/b']
>>> list(_parents('b/d/f/'))
['b/d', 'b']
>>> list(_parents('b'))
[]
>>> list(_parents(''))
[]
� N)� itertools�islice� _ancestry��paths �&/usr/lib/python3/dist-packages/zipp.py�_parentsr s � � ��I�d�O�O�Q��5�5�5� c # �� K � | � t j � � } | r?| t j k r3| V � t j | � � \ } }| r| t j k �-dS dS dS dS )aR
Given a path with elements separated by
posixpath.sep, generate all elements of that path
>>> list(_ancestry('b/d'))
['b/d', 'b']
>>> list(_ancestry('/b/d/'))
['/b/d', '/b']
>>> list(_ancestry('b/d/f/'))
['b/d/f', 'b/d', 'b']
>>> list(_ancestry('b'))
['b']
>>> list(_ancestry(''))
[]
N)�rstrip� posixpath�sep�split)r
�tails r r r % s� � � � � �;�;�y�}�%�%�D�
� +�4�9�=�(�(��
�
�
��_�T�*�*�
��d� � +�4�9�=�(�(�(�(� +� +� +� +�(�(r
c �8 � � e Zd ZdZ� fd�Zed� � � Z� xZS )�SanitizedNamesz7
ZipFile mix-in to ensure names are sanitized.
c � �� t t | j t � � � � � � � � � S �N)�list�map� _sanitize�super�namelist)�self� __class__s �r r zSanitizedNames.namelist? s- �� ��C������(8�(8�(:�(:�;�;�<�<�<r
c �@ � d� }t j dd| t j �� � }|� dd� � }|� d� � }d� t
||� � � � }|st d� � �|d| � d� � z z S )a]
Ensure a relative path with posix separators and no dot names.
Modeled after
https://github.com/python/cpython/blob/bcc1be39cb1d04ad9fc0bd1b9193d3972835a57c/Lib/zipfile/__init__.py#L1799-L1813
but provides consistent cross-platform behavior.
>>> san = SanitizedNames._sanitize
>>> san('/foo/bar')
'foo/bar'
>>> san('//foo.txt')
'foo.txt'
>>> san('foo/.././bar.txt')
'foo/bar.txt'
>>> san('foo../.bar.txt')
'foo../.bar.txt'
>>> san('\\foo\\bar.txt')
'foo/bar.txt'
>>> san('D:\\foo.txt')
'D/foo.txt'
>>> san('\\\\server\\share\\file.txt')
'server/share/file.txt'
>>> san('\\\\?\\GLOBALROOT\\Volume3')
'?/GLOBALROOT/Volume3'
>>> san('\\\\.\\PhysicalDrive1\\root')
'PhysicalDrive1/root'
Retain any trailing slash.
>>> san('abc/')
'abc/'
Raises a ValueError if the result is empty.
>>> san('../..')
Traceback (most recent call last):
...
ValueError: Empty filename
c � � | o| dvS )N> �..�.� )�parts r �allowedz)SanitizedNames._sanitize.<locals>.allowedf s � ��3�D��3�3r
z ^([A-Z]):z\1)�flags�\�/zEmpty filename) �re�sub�
IGNORECASE�replacer �join�filter�
ValueError�endswith)�namer% �bare�clean�parts�joineds r r zSanitizedNames._sanitizeB s� � �H 4� 4� 4�
�v�k�5�$�b�m�D�D�D�����T�3�'�'�����C� � �����&��%�0�0�1�1��� /��-�.�.�.���d�m�m�C�0�0�0�0�0r
)�__name__�
__module__�__qualname__�__doc__r �staticmethodr �
__classcell__)r s @r r r : s] �� � � � � �� �=� =� =� =� =� �.1� .1� �\�.1� .1� .1� .1� .1r
r c � � e Zd ZdZdZdd�Zed� � � Zed� � � Z ed� � � Z
d� Zd � Zd
� Z
d� Zd� Zd
� Zd� Zd� Zd� Zd� Zd� ZeZed� � � Zed� � � Zed� � � Zd� Zej dk reZdS dS )�Pathu�
A pathlib-compatible interface for zip files.
Consider a zip file with this structure::
.
├── a.txt
└── b
├── c.txt
└── d
└── e.txt
>>> data = io.BytesIO()
>>> zf = zipfile.ZipFile(data, 'w')
>>> zf.writestr('a.txt', 'content of a')
>>> zf.writestr('b/c.txt', 'content of c')
>>> zf.writestr('b/d/e.txt', 'content of e')
>>> zf.filename = 'abcde.zip'
Path accepts the zipfile object itself or a filename
>>> root = Path(zf)
From there, several path operations are available.
Directory iteration (including the zip file itself):
>>> a, b = root.iterdir()
>>> a
Path('abcde.zip', 'a.txt')
>>> b
Path('abcde.zip', 'b/')
name property:
>>> b.name
'b'
join with divide operator:
>>> c = b / 'c.txt'
>>> c
Path('abcde.zip', 'b/c.txt')
>>> c.name
'c.txt'
Read text:
>>> c.read_text()
'content of c'
existence:
>>> c.exists()
True
>>> (b / 'missing.txt').exists()
False
Coercion to string:
>>> str(c)
'abcde.zip/b/c.txt'
z>{self.__class__.__name__}({self.root.filename!r}, {self.at!r})� c � � t |t j � � r|n&t j | � |� � � � | _ || _ d S r )�
isinstance�zipfile�ZipFile�_pathlib_compat�root�at)r rD rE s r �__init__z
Path.__init__� sK � � �$���0�0�
=�D�D����!5�!5�d�!;�!;�<�<�
� �
����r
c �j � | � � � S # t $ r t | � � cY S w xY w)zu
For path-like objects, convert to a filename for compatibility
on Python 3.6.1 and earlier.
)�
__fspath__�AttributeError�strr s r rC zPath._pathlib_compat� sD � � ��?�?�$�$�$��� � � ��t�9�9���� ���s � �2�2c �J � t j | j j | j � � S r )� functools�partialrD �openrE �r s r rN z Path.open� s � �� ������9�9�9r
c �Z � t j | j � d� � � � S �Nr( )r �basenamerE r rO s r r1 z Path.name� s! � ��!�$�'�.�.��"5�"5�6�6�6r
c � � | � � � 5 }t j |g|�R i |��� � � cd d d � � S # 1 swxY w Y d S r )rN �io�
TextIOWrapper�read)r �args�kwargs�strms r � read_textzPath.read_text� s� � �
�Y�Y�[�[� B�D��#�D�:�4�:�:�:�6�:�:�?�?�A�A� B� B� B� B� B� B� B� B� B� B� B� B���� B� B� B� B� B� Bs �'A � A
�A
c � � | � � � 5 }|� � � cd d d � � S # 1 swxY w Y d S r )rN rV )r rY s r �
read_byteszPath.read_bytes� s| � �
�Y�Y�[�[� �D��9�9�;�;� � � � � � � � � � � � ���� � � � � � s �6�:�:c � � t j |j � d� � � � | j � d� � k S rQ )r �dirnamerE r )r r
s r � _is_childzPath._is_child� s4 � �� ������!4�!4�5�5������9L�9L�L�Lr
c �, � t | j |� � S r )r= rD )r rE s r �_nextz
Path._next� s � ��D�I�r�"�"�"r
c �F � | j p| j � d� � S rQ )rE r0 rO s r �is_dirzPath.is_dir� s! � ��7�{�3�d�g�.�.�s�3�3�3r
c �, � | � � � S r )rc rO s r �is_filezPath.is_file� s � ��;�;�=�=� � r
c �8 � | j | � � � v S r )rE �_namesrO s r �existszPath.exists� s � ��w�$�+�+�-�-�'�'r
c � � | � � � st d� � �t | j | � � � � � }t | j |� � S )NzCan't listdir a file)rc r/ r ra rg r. r_ )r �subss r �iterdirzPath.iterdir� sL � ��{�{�}�}� 5��3�4�4�4��4�:�t�{�{�}�}�-�-���d�n�d�+�+�+r
c �J � t j | j j | j � � S r )r r- rD �filenamerE rO s r �__str__zPath.__str__� s � ��~�d�i�0�$�'�:�:�:r
c �8 � | j � | �� � S )NrO )�_Path__repr�formatrO s r �__repr__z
Path.__repr__� s � ��{�!�!�t�!�,�,�,r
c � � | � |� � }t j | j |� � }t j | j |d� � }| � � � }| � ||vr||v r|n|� � S )Nr>