HEX
Server: nginx/1.30.4
System: Linux d-twindigital-web-1.host-ed.eu 4.18.0-553.141.2.el8_10.x86_64 #1 SMP Wed Jul 8 10:28:18 EDT 2026 x86_64
User: u_twindigital_html (1009)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/S3/__pycache__/S3Uri.cpython-36.opt-1.pyc
3

@tJ[��@sddlmZmZddlZddlZddlZddlmZmZm	Z	ddl
mZejd krXdZ
ndZ
Gd	d
�d
e�ZGdd�de�ZGd
d�de�ZGdd�de�ZGdd�de�Zedk�red�Zedee��ede�edej�edej��edej��e�ed�Zedee��ede�edej�edej��e�ed�Zedee��ede�edej�edej��e�ed�Zedee��ede�edej�edej��e�ed�Zedee��ede�edej�edej��e�dS)!�)�absolute_import�print_functionN�)�	unicodise�deunicodise�check_bucket_name_dns_support)�Config�TFc@sDeZdZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dS)�S3UriNcCs�|jsfg|_tjtj}xL|D]D}t||�t|�k	r8qt|||�r|||kr|jj||�qWx>|jD]4}ytj	|�}|j
|�|Stk
r�wnYqnXqnWtd|��dS)Nz%s: not a recognized URI)�_subclasses�sys�modules�__name__�__dict__�type�
issubclass�append�object�__new__�__init__�
ValueError)�self�string�dictZ	something�subclass�instance�r�/usr/lib/python3.6/S3Uri.pyrs 


z
S3Uri.__new__cCstr|j�St|j��SdS)N)�PY3�urir)rrrr�__str__-sz
S3Uri.__str__cCs|j�S)N)r)rrrr�__unicode__3szS3Uri.__unicode__cCstd|jj|j�f�S)Nz<%s: %s>)�repr�	__class__rr!)rrrr�__repr__6szS3Uri.__repr__cCstd��dS)Nz6This S3 URI does not have Anonymous URL representation)r)rrrr�
public_url9szS3Uri.public_urlcCs|j�jd�dS)N�/r���)r!�split)rrrr�basename<szS3Uri.basename)r�
__module__�__qualname__rrrr r!r$r%r)rrrrr
sr
c@s�eZdZdZejdejejB�Zdd�Z	dd�Z
dd�Zd	d
�Zdd�Z
d
d�Zdd�Zdd�Zdd�Zeddd��Zedd��ZdS)�S3UriS3Zs3z^s3:///*([^/]*)/?(.*)cCs<|jj|�}|std|��|j�}|d|_|d|_dS)Nz%s: not a S3 URIrr)�_re�matchr�groups�_bucket�_object)rrr.r/rrrrBs
zS3UriS3.__init__cCs|jS)N)r0)rrrr�bucketJszS3UriS3.bucketcCs|jS)N)r1)rrrrrMszS3UriS3.objectcCs
t|j�S)N)�boolr0)rrrr�
has_bucketPszS3UriS3.has_bucketcCs
t|j�S)N)r3r1)rrrr�
has_objectSszS3UriS3.has_objectcCsdjd|j|jg�S)Nr&zs3:/)�joinr0r1)rrrrrVszS3UriS3.uricCsttj�j|j�S)N)rrZhost_bucketr0)rrrr�is_dns_compatibleYszS3UriS3.is_dns_compatiblecCs<|j�r d|jtj�j|jfSdtj�j|j|jfSdS)Nzhttp://%s.%s/%szhttp://%s/%s/%s)r7r0rZ	host_baser1)rrrrr%\szS3UriS3.public_urlcCs|j�rd|jSdSdS)Nz%s.s3.amazonaws.comzs3.amazonaws.com)r7r0)rrrr�	host_namebs
zS3UriS3.host_name�cCsd||fS)Nz
s3://%s/%sr)r2rrrr�compose_urihszS3UriS3.compose_uricCs�tjd|tjtjB�}|j�dd�\}}|j�}|dkrd|jd�dkrR|}d}q�|jdd�\}}n*|jd�r�|dt	d��}nt
d|��td	||d
��S)Nz(https?://)?([^/]+)/?(.*)rzs3.amazonaws.comr&rr9z.s3.amazonaws.comzUnable to parse URL: %szs3://%(bucket)s/%(object)s)r2r)�rer.�
IGNORECASE�UNICODEr/�lower�countr(�endswith�lenrr
)Zhttp_url�m�hostnamerr2rrr�httpurl_to_s3urils
zS3UriS3.httpurl_to_s3uriN)r9)rr*r+rr;�compiler<r=r-rr2rr4r5rr7r%r8�staticmethodr:rDrrrrr,?sr,c@sDeZdZdZejdejejB�Zdd�Z	dd�Z
dd�Zd	d
�ZdS)�	S3UriS3FSZs3fsz^s3fs:///*([^/]*)/?(.*)cCsB|jj|�}|std|��|j�}|d|_|djd�|_dS)Nz%s: not a S3fs URIrrr&)r-r.rr/�_fsnamer(�_path)rrr.r/rrrr�s
zS3UriS3FS.__init__cCs|jS)N)rH)rrrr�fsname�szS3UriS3FS.fsnamecCsdj|j�S)Nr&)r6rI)rrrr�path�szS3UriS3FS.pathcCsdjd|j|j�g�S)Nr&zs3fs:/)r6rHrK)rrrrr�sz
S3UriS3FS.uriN)
rr*r+rr;rEr<r=r-rrJrKrrrrrrG�srGc@sNeZdZdZejdej�Zdd�Zdd�Z	dd�Z
d	d
�Zdd�Zd
d�Z
dS)�	S3UriFile�filez^(\w+://)?(.*)cCs`|jj|�}|j�}|ddkr,td|��|ddkrL|djtj�|_n|djd�|_dS)Nr�file://z%s: not a file:// URIrr&)NrN)r-r.r/rr(�os�seprI)rrr.r/rrrr�szS3UriFile.__init__cCstjj|j�S)N)rOrPr6rI)rrrrrK�szS3UriFile.pathcCsdjdg|j�S)Nr&zfile:/)r6rI)rrrrr�sz
S3UriFile.uricCstjjt|j���S)N)rOrK�isdirr)rrrrrQ�szS3UriFile.isdircCsttjjt|j����S)N)rrOrK�dirnamer)rrrrrR�szS3UriFile.dirnamecCsttjjt|j����S)N)rrOrKr)r)rrrrr)�szS3UriFile.basenameN)rr*r+rr;rEr=r-rrKrrQrRr)rrrrrL�s
rLc@sDeZdZdZejdejejB�Zdd�Z	dd�Z
dd�Zd	d
�ZdS)�S3UriCloudFrontZcfz^cf://([^/]*)/*(.*)cCsL|jj|�}|std|��|j�}|d|_|ddkrB|dpDd|_dS)Nz%s: not a CloudFront URIrrr&)r-r.rr/�_dist_id�_request_id)rrr.r/rrrr�s
zS3UriCloudFront.__init__cCs|jS)N)rT)rrrr�dist_id�szS3UriCloudFront.dist_idcCs|jS)N)rU)rrrr�
request_id�szS3UriCloudFront.request_idcCs(d|j�}|j�r$|d|j�7}|S)Nzcf://r&)rVrW)rrrrrr�szS3UriCloudFront.uriN)
rr*r+rr;rEr<r=r-rrVrWrrrrrrS�srS�__main__zs3://bucket/objectz	type()  =z	uri     =z	uri.type=z	bucket  =z	object  =zs3://bucketz*s3fs://filesystem1/path/to/remote/file.txtz	path    =z/path/to/local/file.txtzcf://1234567890ABCD/z	dist_id =)r	r)Z
__future__rrrOr;rZUtilsrrrr9r�version_inforrr
r,rGrLrSrr�printrr2rKrVrrrr�<module>	sZ
)D