ó
Òbc           @@ s·  d  d l  m Z m Z d  d l Z d  d l Z d  d l Z d d l m Z m Z m	 Z	 d d l
 m Z e j d k Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d k r³e d ƒ Z e d e e ƒ ƒ e d e ƒ e d e j ƒ e d e j ƒ  ƒ e d e j ƒ  ƒ e ƒ  e d ƒ Z e d e e ƒ ƒ e d e ƒ e d e j ƒ e d e j ƒ  ƒ e ƒ  e d ƒ Z e d e e ƒ ƒ e d e ƒ e d e j ƒ e d e j ƒ  ƒ e ƒ  e d ƒ Z e d e e ƒ ƒ e d e ƒ e d e j ƒ e d e j ƒ  ƒ e ƒ  e d ƒ Z e d e e ƒ ƒ e d e ƒ e d e j ƒ e d e j ƒ  ƒ e ƒ  n  d S(   i    (   t   absolute_importt   print_functionNi   (   t	   unicodiset   deunicodiset   check_bucket_name_dns_support(   t   Configi   t   S3Uric           B@ sJ   e  Z d Z d Z d  „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(   c         C@ sõ   |  j  s’ g  |  _  t j t j } xm | D]b } t | | ƒ t |  ƒ k	 rQ q) n  t | | |  ƒ r) | | |  k r) |  j  j | | ƒ q) q) Wn  xL |  j  D]A } y$ t j	 | ƒ } | j
 | ƒ | SWqœ t k
 rÜ qœ qœ Xqœ Wt d | ƒ ‚ d  S(   Ns   %s: not a recognized URI(   t   _subclassest   syst   modulest   __name__t   __dict__t   typet
   issubclasst   appendt   objectt   __new__t   __init__t
   ValueError(   t   selft   stringt   dictt	   somethingt   subclasst   instance(    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR      s     		#c         C@ s$   t  r |  j ƒ  St |  j ƒ  ƒ Sd  S(   N(   t   PY3t   uriR   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   __str__,   s    
c         C@ s
   |  j  ƒ  S(   N(   R   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   __unicode__2   s    c         C@ s    t  d |  j j |  j ƒ  f ƒ S(   Ns   <%s: %s>(   t   reprt	   __class__R
   R   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   __repr__5   s    c         C@ s   t  d ƒ ‚ d  S(   Ns6   This S3 URI does not have Anonymous URL representation(   R   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt
   public_url8   s    c         C@ s   |  j  ƒ  j d ƒ d S(   Nt   /iÿÿÿÿ(   R   t   split(   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   basename;   s    N(   R
   t
   __module__t   NoneR   R   R   R   R   R   R    R#   (    (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR      s   					t   S3UriS3c           B@ sœ   e  Z d  Z e j d e j e j Bƒ Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z e d d „ ƒ Z e d „  ƒ Z RS(   t   s3s   ^s3:///*([^/]*)/?(.*)c         C@ sU   |  j  j | ƒ } | s+ t d | ƒ ‚ n  | j ƒ  } | d |  _ | d |  _ d  S(   Ns   %s: not a S3 URIi    i   (   t   _ret   matchR   t   groupst   _buckett   _object(   R   R   R)   R*   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR   A   s    c         C@ s   |  j  S(   N(   R+   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   bucketI   s    c         C@ s   |  j  S(   N(   R,   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR   L   s    c         C@ s   t  |  j ƒ S(   N(   t   boolR+   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt
   has_bucketO   s    c         C@ s   t  |  j ƒ S(   N(   R.   R,   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt
   has_objectR   s    c         C@ s   d j  d |  j |  j g ƒ S(   Nu   /u   s3:/(   t   joinR+   R,   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR   U   s    c         C@ s   t  t j ƒ  j |  j ƒ S(   N(   R   R   t   host_bucketR+   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   is_dns_compatibleX   s    c         C@ st   d } t  j  ƒ  j r d } n  |  j ƒ  rM d | |  j t  j  ƒ  j |  j f Sd | t  j  ƒ  j |  j |  j f Sd  S(   Nt   httpt   httpss   %s://%s.%s/%ss   %s://%s/%s/%s(   R   t   public_url_use_httpsR3   R+   t	   host_baseR,   (   R   t   public_url_protocol(    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR    [   s    	#c         C@ s   |  j  ƒ  r d |  j Sd Sd  S(   Ns   %s.s3.amazonaws.coms   s3.amazonaws.com(   R3   R+   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt	   host_named   s    t    c         C@ s   d |  | f S(   Nu
   s3://%s/%s(    (   R-   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   compose_urij   s    c         C@ sÛ   t  j d |  t  j t  j Bƒ } | j ƒ  d \ } } | j ƒ  } | d k rŒ | j d ƒ d k rq | } d } q¿ | j d d ƒ \ } } n3 | j d ƒ r¯ | t	 d ƒ  } n t
 d |  ƒ ‚ t d	 i | d
 6| d 6ƒ S(   Ns   (https?://)?([^/]+)/?(.*)i   s   s3.amazonaws.comR!   i    R:   s   .s3.amazonaws.coms   Unable to parse URL: %su   s3://%(bucket)s/%(object)sR-   R   (   t   reR)   t
   IGNORECASEt   UNICODER*   t   lowert   countR"   t   endswitht   lenR   R   (   t   http_urlt   mt   hostnameR   R-   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   httpurl_to_s3urin   s    		(   R
   R$   R   R<   t   compileR=   R>   R(   R   R-   R   R/   R0   R   R3   R    R9   t   staticmethodR;   RF   (    (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR&   >   s   										t	   S3UriS3FSc           B@ sN   e  Z d  Z e j d e j e j Bƒ Z d „  Z d „  Z	 d „  Z
 d „  Z RS(   t   s3fss   ^s3fs:///*([^/]*)/?(.*)c         C@ s^   |  j  j | ƒ } | s+ t d | ƒ ‚ n  | j ƒ  } | d |  _ | d j d ƒ |  _ d  S(   Ns   %s: not a S3fs URIi    i   R!   (   R(   R)   R   R*   t   _fsnameR"   t   _path(   R   R   R)   R*   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR   ˆ   s    c         C@ s   |  j  S(   N(   RK   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   fsname   s    c         C@ s   d j  |  j ƒ S(   NR!   (   R1   RL   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   path“   s    c         C@ s   d j  d |  j |  j ƒ  g ƒ S(   Nu   /u   s3fs:/(   R1   RK   RN   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR   –   s    (   R
   R$   R   R<   RG   R=   R>   R(   R   RM   RN   R   (    (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyRI   …   s   			t	   S3UriFilec           B@ sY   e  Z d  Z e j d e j ƒ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z RS(   t   files   ^(\w+://)?(.*)c         C@ s‡   |  j  j | ƒ } | j ƒ  } | d d k rA t d | ƒ ‚ n  | d d  k rm | d j t j ƒ |  _ n | d j d ƒ |  _ d  S(   Ni    s   file://s   %s: not a file:// URIi   R!   (   Ns   file://(	   R(   R)   R*   R%   R   R"   t   ost   sepRL   (   R   R   R)   R*   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR   œ   s    c         C@ s   t  j j |  j ƒ S(   N(   RQ   RR   R1   RL   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyRN   ¦   s    c         C@ s   d j  d g |  j ƒ S(   Nu   /u   file:/(   R1   RL   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR   ©   s    c         C@ s   t  j j t |  j ƒ  ƒ ƒ S(   N(   RQ   RN   t   isdirR   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyRS   ¬   s    c         C@ s"   t  t j j t |  j ƒ  ƒ ƒ ƒ S(   N(   R   RQ   RN   t   dirnameR   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyRT   ¯   s    c         C@ s"   t  t j j t |  j ƒ  ƒ ƒ ƒ S(   N(   R   RQ   RN   R#   R   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR#   ²   s    (   R
   R$   R   R<   RG   R>   R(   R   RN   R   RS   RT   R#   (    (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyRO   ™   s   	
				t   S3UriCloudFrontc           B@ sN   e  Z d  Z e j d e j e j Bƒ Z d „  Z d „  Z	 d „  Z
 d „  Z RS(   t   cfs   ^cf://([^/]*)/*(.*)c         C@ sk   |  j  j | ƒ } | s+ t d | ƒ ‚ n  | j ƒ  } | d |  _ | d d k r^ | d pa d  |  _ d  S(   Ns   %s: not a CloudFront URIi    i   R!   (   R(   R)   R   R*   t   _dist_idR%   t   _request_id(   R   R   R)   R*   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR   ¸   s    c         C@ s   |  j  S(   N(   RW   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   dist_idÀ   s    c         C@ s   |  j  S(   N(   RX   (   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt
   request_idÃ   s    c         C@ s7   d |  j  ƒ  } |  j ƒ  r3 | d |  j ƒ  7} n  | S(   Nu   cf://u   /(   RY   RZ   (   R   R   (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyR   Æ   s    (   R
   R$   R   R<   RG   R=   R>   R(   R   RY   RZ   R   (    (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyRU   µ   s   			t   __main__s   s3://bucket/objects	   type()  =s	   uri     =s	   uri.type=s	   bucket  =s	   object  =s   s3://buckets*   s3fs://filesystem1/path/to/remote/file.txts	   path    =s   /path/to/local/file.txts   cf://1234567890ABCD/s	   dist_id =(   i   i    (   t
   __future__R    R   RQ   R<   R   t   UtilsR   R   R   R:   R   t   version_infoR   R   R   R&   RI   RO   RU   R
   R   t   printR   R-   RN   RY   (    (    (    sH   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/S3Uri.pyt   <module>	   sV   )G