ó
’3Rc           @   sw   d  Z  d d l Z d d l Z d d l m Z d e f d „  ƒ  YZ d e j f d „  ƒ  YZ d e f d	 „  ƒ  YZ	 d S(
   sV   
Someone who modifiers something in git

like committing changes or authoring a patch
iÿÿÿÿN(   t   GitErrort   GitModifierErrorc           B   s   e  Z d  Z RS(   s"   Exception thrown by L{GitModifier}(   t   __name__t
   __module__t   __doc__(    (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyR      s   t   GitTzc           B   s,   e  Z d  Z d d „ Z d „  Z d „  Z RS(   s)   Simple class to store the utc offset onlyi    c         O   s2   t  t |  ƒ j | | Ž  t j d | ƒ |  _ d  S(   Nt   seconds(   t   superR   t   __init__t   datetimet	   timedeltat   _offset(   t   selft
   offset_sect   argst   kwargs(    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyR   !   s    c         C   s   |  j  S(   N(   R   (   R   t   dt(    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt	   utcoffset%   s    c         C   s   t  j d ƒ S(   Ni    (   R	   R
   (   R   R   (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt   dst(   s    (   R   R   R   R   R   R   (    (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyR      s   	t   GitModifierc           B   s¤   e  Z d  Z d d d d „ Z d „  Z d „  Z d „  Z d „  Z e	 e e ƒ Z
 e	 d „  ƒ Z e	 d „  ƒ Z d „  Z d	 „  Z d
 „  Z e d „  ƒ Z d „  Z RS(   s&   Stores authorship/comitter informationc         C   s#   | |  _  | |  _ |  j | ƒ d S(   s  
        @param name: the modifier's name
        @type name: C{str}
        @param email: the modifier's email
        @type email: C{str}
        @param date: the date of the modification
        @type date: C{str} (git raw date), C{int} (timestamp) or I{datetime} object
        N(   t   namet   emailt   _parse_date(   R   R   R   t   date(    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyR   -   s    			c         C   s0  d  |  _ t d ƒ } t | t ƒ r | j ƒ  \ } } t | d  ƒ } t | d ƒ } t | d | d ƒ } t j j t | ƒ | ƒ |  _ n t	 | ƒ t	 d ƒ t	 d ƒ g k rÎ t j j | | ƒ |  _ n^ t | t j ƒ r| j
 rõ | |  _ q,| j d | ƒ |  _ n | d  k r,t d | ƒ ‚ n  d  S(   Ni    iþÿÿÿi  i<   g        t   tzinfos8   Date '%s' not timestamp, datetime object or git raw date(   t   Nonet   _dateR   t
   isinstancet
   basestringt   splitt   intR	   t   fromtimestampt   typeR   t   replacet
   ValueError(   R   R   t   tzt	   timestampt   offsett   offset_ht   offset_m(    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyR   :   s"    	!$	c         C   sˆ   | j  ƒ  } | d k r' t d ƒ ‚ n  i  } |  j rJ |  j | d | <n  |  j rg |  j | d | <n  |  j r„ |  j | d | <n  | S(   s8   Get author or comitter information as env var dictionaryt   AUTHORt	   COMMITTERs   Neither comitter nor authors   GIT_%s_NAMEs   GIT_%s_EMAILs   GIT_%s_DATE(   R(   R)   (   t   upperR   R   R   R   (   R   t   whot	   extra_env(    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt   _get_envO   s    			c         C   s=   |  j  r5 d t j |  j  j ƒ  ƒ |  j  j d ƒ f Sd Sd S(   s   Return date as a git raw dates   %s %ss   %zN(   R   t   calendart   timegmt   utctimetuplet   strftimeR   (   R   (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt   get_date^   s    	c         C   s   |  j  | ƒ d S(   s8   Set date from timestamp, git raw date or datetime objectN(   R   (   R   R   (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt   set_datef   s    c         C   s   |  j  S(   s"   Return the date as datetime object(   R   (   R   (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyR	   l   s    c         C   s   |  j  j d ƒ S(   s   Return the date's UTC offsets   %z(   R   R1   (   R   (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt	   tz_offsetq   s    c         C   s   |  j  d ƒ S(   s'  
        Get env vars for authorship information

        >>> g = GitModifier("foo", "bar")
        >>> g.get_author_env()
        {'GIT_AUTHOR_EMAIL': 'bar', 'GIT_AUTHOR_NAME': 'foo'}

        @return: Author information suitable to use as environment variables
        @rtype: C{dict}
        t   author(   R-   (   R   (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt   get_author_envv   s    c         C   s   |  j  d ƒ S(   s0  
        Get env vars for comitter information

        >>> g = GitModifier("foo", "bar")
        >>> g.get_committer_env()
        {'GIT_COMMITTER_NAME': 'foo', 'GIT_COMMITTER_EMAIL': 'bar'}

        @return: Commiter information suitable to use as environment variables
        @rtype: C{dict}
        t	   committer(   R-   (   R   (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt   get_committer_envƒ   s    c         C   s"   | d k r |  j  S|  j | Sd  S(   NR   (   R   t   __dict__(   R   t   key(    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt   __getitem__   s    c           C   s   d d d g S(   NR   R   R   (    (    (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt   keys–   s    c         C   sL   g  } x? |  j  ƒ  D]1 } |  j | ƒ } | r | j | | f ƒ q q W| S(   N(   R<   R;   t   append(   R   t   itemsR:   t   val(    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyR>   š   s    N(   R   R   R   R   R   R   R-   R2   R3   t   propertyR   R	   R4   R6   R8   R;   t   staticmethodR<   R>   (    (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyR   +   s   							(
   R   R.   R	   t   gbp.git.errorsR    R   R   R   t   objectR   (    (    (    s4   /usr/lib/python2.7/dist-packages/gbp/git/modifier.pyt   <module>   s
   