ó
AqzRc           @   sh   d  Z  d d l Z d d l Z d d l m Z d d l m Z d d l m Z d e	 f d „  ƒ  YZ
 d S(   s3   provides some debian source package related helpersiÿÿÿÿN(   t   GbpError(   t   UpstreamSource(   t   DebianPkgPolicyt   DscFilec           B   sÆ   e  Z d  Z d d j e j ƒ  ƒ Z e j d ƒ Z	 e j d e
 j ƒ Z e j d e ƒ Z e j d ƒ Z e j d e ƒ Z e j d ƒ Z d	 „  Z d
 „  Z e e ƒ Z d „  Z e d „  ƒ Z RS(   s)   Keeps all needed data read from a dscfiles   (%s)t   |s   Source:\s+(?P<pkg>.+)\s*s3   Version:\s((?P<epoch>\d+)\:)?(?P<version>[%s]+)\s*$s4   ^\s\w+\s\d+\s+(?P<tar>[^_]+_[^_]+(\.orig)?\.tar\.%s)s2   ^\s\w+\s\d+\s+(?P<diff>[^_]+_[^_]+\.diff.(gz|bz2))s5   ^\s\w+\s\d+\s+(?P<deb_tgz>[^_]+_[^_]+\.debian.tar.%s)s    Format:\s+(?P<format>[0-9.]+)\s*c         C   s(  d |  _  d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ t |  _ t	 j
 j | ƒ |  _ t |  j ƒ } t	 j
 j t	 j
 j | ƒ ƒ } x| D]þ} |  j j | ƒ } | rr|  j rrd | j d ƒ k r$| j d ƒ j d ƒ d |  _ d j | j d ƒ j d ƒ d d !ƒ |  _ t |  _ n t |  _ | j d ƒ |  _ | j d ƒ rc| j d ƒ |  _ q‘ d |  _ q‘ n  |  j j | ƒ } | r¢| j d ƒ |  _  q‘ n  |  j j | ƒ } | rát	 j
 j | | j d	 ƒ ƒ |  _ q‘ n  |  j j | ƒ } | r t	 j
 j | | j d
 ƒ ƒ |  _ q‘ n  |  j j | ƒ } | r_t	 j
 j | | j d ƒ ƒ |  _ q‘ n  |  j j | ƒ } | r‘ | j d ƒ |  _ q‘ q‘ q‘ W| j ƒ  |  j  s¼t d |  j ƒ ‚ n |  j sÛt d |  j ƒ ‚ n  |  j sút d |  j ƒ ‚ n  |  j r$|  j r$t d |  j ƒ ‚ n  d  S(   Nt    s   1.0t   -t   versioniÿÿÿÿi    t   epocht   pkgt   deb_tgzt   tart   difft   formats#   Cannot parse package name from '%s's#   Cannot parse archive name from '%s's%   Cannot parse version number from '%s's,   Cannot parse Debian version number from '%s'(   R	   t   tgzR   R
   t	   pkgformatt   debian_versiont   upstream_versiont   Falset   nativet   ost   patht   abspatht   dscfilet   opent   dirnamet
   version_ret   matcht   groupt   splitt   joint   TrueR   t   pkg_ret
   deb_tgz_ret   tar_ret   diff_ret	   format_ret   closeR    (   t   selfR   t   ft   fromdirt   linet   m(    (    s3   /usr/lib/python2.7/dist-packages/gbp/deb/dscfile.pyt   __init__)   sj    								+		!!!

			c         C   s]   d |  j  d g t |  j  ƒ d k } |  j r? | |  j 7} n | d |  j |  j f 7} | S(   NR   t   :i    s   %s-%s(   R   t   lenR   R   R   (   R&   R   (    (    s3   /usr/lib/python2.7/dist-packages/gbp/deb/dscfile.pyt   _get_versiond   s
    &	c         C   s   d |  j  j |  j f S(   Ns   <%s object %s>(   t	   __class__t   __name__R   (   R&   (    (    s3   /usr/lib/python2.7/dist-packages/gbp/deb/dscfile.pyt   __str__n   s    c         C   s:   y |  | ƒ } Wn# t  k
 r5 } t d | ƒ ‚ n X| S(   Ns   Error reading dsc file: %s(   t   IOErrorR    (   t   clst   filenamet   dsct   err(    (    s3   /usr/lib/python2.7/dist-packages/gbp/deb/dscfile.pyt   parseq   s
    (   R0   t
   __module__t   __doc__R   R   t   known_compressionst   compressionst   ret   compileR    R   t   debianversion_charsR   R"   R#   R!   R$   R+   R.   t   propertyR   R1   t   classmethodR7   (    (    (    s3   /usr/lib/python2.7/dist-packages/gbp/deb/dscfile.pyR      s    		
	
	;		(   R9   R   R<   t
   gbp.errorsR    t   gbp.pkgR   t   gbp.deb.policyR   t   objectR   (    (    (    s3   /usr/lib/python2.7/dist-packages/gbp/deb/dscfile.pyt   <module>   s   