ó
è?F[c           @   s   d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z m Z m Z m Z m	 Z	 d Z
 e
 g Z e  j j e d ƒ d ƒ Z e j e ƒ d e  j k r· e e  j d ƒ g Z nO d e  j k rg  Z x7 e  j d j e  j ƒ D] Z e j e e ƒ ƒ qæ Wn  d e f d	 „  ƒ  YZ d S(
   iÿÿÿÿN(   t
   expandusert   ConfigParsert   NoOptionErrort   NoSectionErrort   StringIOs   /etc/boto.cfgt   ~s   .botot   BOTO_CONFIGt	   BOTO_PATHt   Configc           B   sò   e  Z d d e d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d d	 „ Z d d
 „ Z d d „ Z d d „ Z d d „ Z d d „ Z d d „ Z e d „ Z d „  Z d „  Z d d „ Z d „  Z d „  Z RS(   c         C   s¾   t  i d d 6d d 6ƒ |  _ | rº | r9 |  j | ƒ n# | rO |  j | ƒ n |  j t ƒ d t j k rº t t j d ƒ } y |  j	 | ƒ Wq· t
 k
 r³ t j d | ƒ q· Xqº n  d  S(   Ns
   /mnt/pyamit   working_dirt   0t   debugt   AWS_CREDENTIAL_FILEs'   Unable to load AWS_CREDENTIAL_FILE (%s)(   R   t   _parsert   load_from_patht   readfpt   readt   BotoConfigLocationst   ost   environR    t   load_credential_filet   IOErrort   warningst   warn(   t   selft   patht   fpt   do_loadt	   full_path(    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   __init__6   s    c         C   s   | d |  _  d  S(   NR   (   R   (   R   t   state(    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   __setstate__G   s    c         C   s   t  |  j | ƒ S(   N(   t   getattrR   (   R   t   name(    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   __getattr__P   s    c         O   s   |  j  j | | Ž  S(   N(   R   t
   has_option(   R   t   argst   kwargs(    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyR#   S   s    c         C   sy   t  ƒ  } | j d ƒ xB t | d ƒ j ƒ  D]+ } | j | j d d ƒ j d d ƒ ƒ q, W| j d ƒ |  j | ƒ d S(	   s:   Load a credential file as is setup like the Java utilitiess   [Credentials]
t   rt   AWSAccessKeyIdt   aws_access_key_idt   AWSSecretKeyt   aws_secret_access_keyi    N(   R   t   writet   opent	   readlinest   replacet   seekR   (   R   R   t   c_datat   line(    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyR   V   s    	)c         C   s’   t  | ƒ } xr | j ƒ  D]d } t j d | ƒ } | r | j d ƒ } t j j | ƒ \ } } |  j t j j	 | | ƒ ƒ q q W|  j
 | ƒ d  S(   Ns   ^#import[\s	]*([^\s^	]*)[\s	]*$i   (   R,   R-   t   ret   matcht   groupR   R   t   splitR   t   joinR   (   R   R   t   fileR1   R3   t   extended_filet   dir(    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyR   _   s    #c         C   s¤   t  ƒ  } | j | ƒ | j | ƒ s5 | j | ƒ n  | j | | | ƒ t | d ƒ } | j | ƒ | j ƒ  |  j | ƒ s |  j | ƒ n  |  j | | | ƒ d S(   sÛ   
        Write the specified Section.Option to the config file specified by path.
        Replace any previous value.  If the path doesn't exist, create it.
        Also add the option the the in-memory config.
        t   wN(   R   R   t   has_sectiont   add_sectiont   setR,   R+   t   close(   R   R   t   sectiont   optiont   valuet   configR   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   save_optioni   s    	
c         C   s   |  j  t | | | ƒ d  S(   N(   RC   t   UserConfigPath(   R   R?   R@   RA   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   save_user_option{   s    c         C   s   |  j  t | | | ƒ d  S(   N(   RC   t   BotoConfigPath(   R   R?   R@   RA   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   save_system_option~   s    c         C   s:   y |  j  d | ƒ } Wn t t f k
 r5 | } n X| S(   Nt   Instance(   t   getR   R   (   R   R!   t   defaultt   val(    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   get_instance   s
    
c         C   s:   y |  j  d | ƒ } Wn t t f k
 r5 | } n X| S(   Nt   User(   RI   R   R   (   R   R!   RJ   RK   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   get_userˆ   s
    
i    c         C   s:   y |  j  d | ƒ } Wn t t f k
 r5 | } n X| S(   NRM   (   t   getintR   R   (   R   R!   RJ   RK   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   getint_user   s
    
c         C   s   |  j  | | | ƒ S(   N(   RI   (   R   R?   R!   RJ   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt	   get_value–   s    c         C   s6   y |  j  j | | ƒ SWn t t f k
 r1 | SXd  S(   N(   R   RI   R   R   (   R   R?   R!   RJ   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyRI   ™   s    c         C   s<   y |  j  j | | ƒ SWn t t f k
 r7 t | ƒ SXd  S(   N(   R   RO   R   R   t   int(   R   R?   R!   RJ   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyRO   Ÿ   s    g        c         C   s<   y |  j  j | | ƒ SWn t t f k
 r7 t | ƒ SXd  S(   N(   R   t   getfloatR   R   t   float(   R   R?   R!   RJ   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyRS   ¥   s    c         C   sR   |  j  | | ƒ rH |  j | | ƒ } | j ƒ  d k r? t } qN t } n | } | S(   Nt   true(   R#   RI   t   lowert   Truet   False(   R   R?   R!   RJ   RK   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   getbool«   s    		c         C   s3   | r |  j  | | d ƒ n |  j  | | d ƒ d  S(   NRU   t   false(   R=   (   R   R?   R!   RA   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   setbool¶   s    c         C   s%   t  ƒ  } |  j | ƒ | j ƒ  GHd  S(   N(   R   R+   t   getvalue(   R   t   s(    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   dump¼   s    	c         C   s›   | s t  ƒ  } n  x‚ |  j ƒ  D]t } | j d | ƒ xZ |  j | ƒ D]I } | d k rl | j d | ƒ qF | j d | |  j | | ƒ f ƒ qF Wq Wd  S(   Ns   [%s]
R*   s   %s = xxxxxxxxxxxxxxxxxx
s   %s = %s
(   R   t   sectionsR+   t   optionsRI   (   R   R   R?   R@   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt	   dump_safeÁ   s    c   
      C   sÉ   d d l  m } t j ƒ  } | j | ƒ } | sC | j | ƒ } n  | j | ƒ } t | _ x] |  j	 ƒ  D]O } i  } x- |  j
 | ƒ D] }	 |  j | |	 ƒ | |	 <q„ W| j | ƒ | | <qh W| j ƒ  d  S(   Niÿÿÿÿ(   t   json(   t   boto.compatRb   t   botot   connect_sdbt   lookupt   create_domaint   new_itemRX   t   activeR_   R`   RI   t   dumpst   save(
   R   t   domain_namet	   item_nameRb   t   sdbt   domaint   itemR?   t   dR@   (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   dump_to_sdbÌ   s    	c         C   sõ   d d l  m } t j ƒ  } | j | ƒ } | j | ƒ } x´ | j ƒ  D]¦ } |  j | ƒ sl |  j | ƒ n  | j	 | | ƒ } xk | j ƒ  D]] }	 | |	 }
 |
 d  k r± d }
 n  t |
 t ƒ rÖ |  j | |	 |
 ƒ qŒ |  j | |	 |
 ƒ qŒ WqG Wd  S(   Niÿÿÿÿ(   Rb   t   None(   Rc   Rb   Rd   Re   Rf   t   get_itemt   keysR;   R<   t   loadsRs   t
   isinstancet   boolR[   R=   (   R   Rl   Rm   Rb   Rn   Ro   Rp   R?   Rq   t	   attr_namet
   attr_value(    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   load_from_sdbÛ   s    
	N(   t   __name__t
   __module__Rs   RW   R   R   R"   R#   R   R   RC   RE   RG   RL   RN   RP   RQ   RI   RO   RS   RX   RY   R[   R^   Ra   Rr   R{   (    (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyR   4   s,   							
						(   R   R2   R   Rd   Rc   R    R   R   R   R   RF   R   R   R6   RD   t   appendR   R5   t   pathsept   objectR   (    (    (    s0   lib/python2.7/site-packages/boto/pyami/config.pyt   <module>   s   (	 