
?F[c           @   s?  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z y d  d l	 Z
 Wn e k
 r d  d l Z
 n Xd   Z d e f d     YZ d e j j f d     YZ d e j j f d     YZ d	 e j j f d
     YZ d e f d     YZ d e f d     YZ d S(   iNc            s      f d   } | S(   Nc            s   |  t  j k r t j d  n  t j t _  r t j j   r t j j   r t	 j
 d k rt t	 j | |  |  q t	 j |  n6   r t j |  GHt j d  n | GHt j d  d  S(   Ni   t   epdb(   t   bdbt   BdbQuitt   syst   exitt   __excepthook__t
   excepthookt   stdoutt   isattyt   stdint   debuggert   __name__t   post_mortemt	   tracebackt   print_tb(   t   typt   valuet   tb(   t
   debug_flagt   debugger_flag(    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR   &   s    $(    (   R   R   R   (    (   R   R   s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   boto_except_hook%   s    t   Linec           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s5   | |  _  | |  _ | |  _ d | |  _ t |  _ d  S(   Ns   %s	(   t   fmtt   datat   labelt   linet   Falset   printed(   t   selfR   R   R   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   __init__;   s
    			c         C   s   |  j  d | 7_  d  S(   Ns   %s	(   R   (   R   t   datum(    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   appendB   s    c         C   s!   |  j  s |  j GHt |  _  n  d  S(   N(   R   R   t   True(   R   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   print_itE   s    	(   R   t
   __module__R   R   R!   (    (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR   9   s   		t   RequiredParamErrorc           B   s   e  Z d    Z RS(   c         C   s0   | |  _  d |  j  } t t |   j |  d  S(   Ns#   Required parameters are missing: %s(   t   requiredt   superR#   R   (   R   R$   t   s(    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR   L   s    	(   R   R"   R   (    (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR#   J   s   t   EncoderErrorc           B   s   e  Z d    Z RS(   c         C   s$   d | } t  t |   j |  d  S(   Ns   Error encoding value (%s)(   R%   R'   R   (   R   t	   error_msgR&   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR   S   s    
(   R   R"   R   (    (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR'   Q   s   t   FilterErrorc           B   s   e  Z d    Z RS(   c         C   s0   | |  _  d |  j  } t t |   j |  d  S(   Ns   Unknown filters: %s(   t   filtersR%   R)   R   (   R   R*   R&   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR   Y   s    	(   R   R"   R   (    (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR)   W   s   t   Encoderc           B   sq   e  Z e d d    Z e d    Z e Z e Z e d    Z e d    Z	 e d    Z
 e d    Z RS(   c         C   sn   | j  j d  r d  Sy- t |  d | j  } | | | | |  Wn$ t k
 ri t d | j   n Xd  S(   Nt   _t   encode_s   Unknown type: %s(   t   namet
   startswitht   getattrt   ptypet   AttributeErrorR'   (   t   clst   pt   rpt   vR   t   mthd(    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   encode`   s    c         C   s&   | r | } n	 | j  } | | | <d  S(   N(   R.   (   R3   R4   R5   R6   t   lR   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   encode_stringj   s    		c         C   s*   | r | } n	 | j  } d | | | <d  S(   Ns   %d(   R.   (   R3   R4   R5   R6   R9   R   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   encode_integeru   s    		c         C   s;   | r | } n	 | j  } | r' d } n d } | | | <d  S(   Nt   truet   false(   R.   (   R3   R4   R5   R6   R9   R   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   encode_boolean}   s    			c         C   s&   | r | } n	 | j  } | | | <d  S(   N(   R.   (   R3   R4   R5   R6   R9   R   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   encode_datetime   s    		c         C   sg   t  j j |  } | r! | } n	 | j } | d } x, t |  D] \ } } | | | | d <qA Wd  S(   Ns   .%di   (   t   botot   utilst   mklistR.   t	   enumerate(   R3   R4   R5   R6   R9   R   t   iR   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   encode_array   s    		
N(   R   R"   t   classmethodt   NoneR8   R:   t   encode_filet   encode_enumR;   R>   R?   RE   (    (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR+   ^   s   	t   AWSQueryRequestc           B   s-  e  Z d Z d  Z g  Z g  Z g  Z i  Z i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d	 6Z	 e
 d
    Z d   Z d   Z d   Z e d    Z e d    Z e d    Z d   Z d   Z d d  Z d d  Z d   Z d   Z d   Z d   Z d   Z d  d  Z d   Z RS(   t    t   stringt   intt   integert   choicet   enumt   datetimet   dateTimet   filet   booleanc         C   s   |  j  S(   N(   R   (   R3   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR.      s    c         K   s^   | |  _  d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ g  |  _ g  |  _ i  |  _	 d  |  _
 d  S(   N(   t   argsRG   t   parsert   cli_optionst   cli_argst   cli_output_formatt
   connectiont   list_markerst   item_markerst   request_paramst   connection_args(   R   RU   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR      s    									c         C   s
   |  j    S(   N(   R.   (   R   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   __repr__   s    c         K   s+   |  j  d  k r$ |  j |   |  _  n  |  j  S(   N(   RZ   RG   t   ServiceClass(   R   RU   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   get_connection   s    c         C   s(   d  } |  j d  k	 r$ |  j j } n  | S(   N(   RG   t   http_responset   status(   R   t   retval(    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyRc      s    c         C   s(   d  } |  j d  k	 r$ |  j j } n  | S(   N(   RG   Rb   t   reason(   R   Rd   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyRe      s    c         C   s.   d  } |  j d  k	 r* t |  j d  } n  | S(   Nt	   requestId(   RG   t   aws_responseR0   (   R   Rd   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt
   request_id   s    c   
   
   C   s  |  j  j d g   } g  |  j D] } | d ^ q } g  | D] } | | k r< | ^ q< } | rs t d |   n  x t |  j  D] \ } } | d } | | k r | |  j d | d <xX t t j j | |   D]7 \ } }	 t	 j
 | |  j |	 d | d | d f  q Wq q Wd  S(   NR*   R.   s   Unknown filters: %ss   Filter.%d.Namei   s   Filter.%d.Value.%d(   RU   t   gett   FiltersR)   RC   R]   R@   RA   RB   R+   R8   (
   R   R*   t   ft   filter_namest   unknown_filtersRD   t   filterR.   t   jR   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   process_filters   s     %
)c         K   s  |  j  j |  t j |  j   |  _ d |  j  k r] |  j  d d k r] t j |  j    n  g  |  j |  j D] } | j	 sn | j ^ qn } x|  j |  j D]} | j
 r | j
 j d d  } n t j j | j d  } d	 } | |  j  k r|  j  | } n  | d	 k r| j } n  | d	 k	 r| j | k rG| j | j  n  | j r| j rr| j | |  j |  qt j | |  j |  qn  | |  j  k r |  j | =q q W| reg  } x |  j |  j D]~ } | j | k r| j r| j
 r| j d | j | j f  qI| j r2| j d | j  qI| j d | j  qqWt d j |    n  t j j d |  j  |  j |  j  d	 S(
   s  
        Responsible for walking through Params defined for the request and:

        * Matching them with keyword parameters passed to the request
          constructor or via the command line.
        * Checking to see if all required parameters have been specified
          and raising an exception, if not.
        * Encoding each value into the set of request parameters that will
          be sent in the request to the AWS service.
        t   debugi   t   -R,   s   (%s, %s)s   (%s)t   ,s   request_params: %sN(    RU   t   updatet   copyR^   R@   t   set_stream_loggerR.   t   Paramst   Argst   optionalt	   long_namet   replaceRA   t   pythonize_nameRG   t   defaultt   removet   request_paramt   encoderR]   R+   R8   t
   short_nameR   t   optparse_short_namet   optparse_long_nameR#   t   joint   logRq   t   process_markerst   Response(   R   RU   R4   R$   t   paramt   python_nameR   R9   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   process_args   sH    "/				c         C   s   | rB | d d k rB xf | d D] } |  j  | | d  q! Wn= | r | d d k r |  j j |  |  j j | d  n  d  S(   Nt   typet   objectt
   propertiesR.   t   array(   R   R[   R   R\   (   R   R   t	   prev_namet   prop(    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR     s    t   GETc         K   s<  |  j  |   |  j   |  j |  j   } | j |  j   |  j d | |  _ |  j j   |  _	 t
 j j |  j	  |  j j d k r t
 j j d |  j d |  j  |  _ t
 j j |  j |   } | j |  j	  |  j St
 j j d |  j j |  j j f  t
 j j d |  j	  | j |  j j |  j j |  j	   d  S(   Nt   verbi   t   list_markert   item_markers   %s %ss   %s(   R   Rp   Ra   R^   t   make_requestR.   R]   Rb   t   readt   bodyR@   R   Rq   Rc   t   jsonresponset   ElementR[   R\   Rg   t
   XmlHandlert   parset   errorRe   t   ResponseError(   R   R   RU   t   connt   h(    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   send%  s(    
		c         C   s4  t  j |  j d  } | j d d d d d d | j d d d d	 t d d
 | j d d d d d d | j d d d d d | j d d d d d d | j d d d d d d | j d d d d d |  j r |  j j d d d d d |  j j d d d d d d d n  |  j j |  d  S(    Ns   Standard Optionss   -Ds   --debugt   actiont
   store_truet   helps   Turn on all debugging outputs
   --debuggerR}   s$   Enable interactive debugger on errors   -Us   --urlt   stores(   Override service URL with value provideds   --regions    Name of the region to connect tos   -Is   --access-key-ids   Override access key values   -Ss   --secret-keys   Override secret key values	   --versions   Display version strings   --help-filterss!   Display list of available filterss   --filterR   t   metavars    name=values!   A filter for limiting the results(   t   optparset   OptionGroupRV   t
   add_optionR   Rj   t   groupt   add_option_group(   R   R   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   add_standard_options<  s.    	
c         C   s  t  | d  rV | j rV d GHx& |  j D] } d | j | j f GHq' Wt j d  n  | j ro d |  j d <n  | j	 r | j	 |  j d <n  | j
 r | j
 |  j d <n  | j r | j |  j d	 <n  | j r | j |  j d
 <n  | j r d GHt d  n  t | j | j  t _ d  S(   Nt   help_filterss   Available filters:s   %s	%si    i   Rq   t   urlt   regiont   aws_access_key_idt   aws_secret_access_keys   version x.xx(   t   hasattrR   Rj   R.   t   docR   R   Rq   RU   R   R   t   access_key_idt
   secret_keyt   versionR   R
   R   (   R   t   optionsRU   t   dRn   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   process_standard_optionsV  s(    							c         C   sv   d } g  |  j  D] } | j ^ q } | d j |  7} x7 |  j  D], } | j rB | d | j | j f 7} qB qB W| S(   Ns   usage: %prog [options] t    s
   

	%s - %s(   Rx   Rz   R   R   (   R   R&   t   aR9   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt	   get_usagem  s    	!c         C   s  t  j d |  j d |  j    |  _ |  j   xP|  j D]E} d  } } } | j |  j	 k rw |  j	 | j } d } n  | j d k r d } nY | j d k r t
 | j  d k r | j d d	 } d
 } q n | j d k r d
 } n  | s | d k r8 | j r=|  j j | j | j d | d	 | d | j d | j q}| j r}|  j j | j d | d	 | d | j d | j q}q8 q8 Wd  S(   Nt   descriptiont   usageR   RT   R   R   i   i    R   R   R   t   choicesR   (   R   t   OptionParsert   DescriptionR   RV   R   Rw   RG   R1   t
   CLITypeMapt   lent   itemst   cardinalityR   R   R   R   R   R   Rz   (   R   R   R1   R   R   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   build_cli_parserv  s8    
								c         C   si  |  j  s |  j   n  |  j  j   \ |  _ |  _ i  } |  j |  j |  j |  x|  j D] } | j r | j j d d  } n t	 j
 j | j  } t |  j |  } | j d k rM| rM| d k r t j j   } qMt j j |  } t j j |  } t j j |  r6t |  } | j   } | j   qM|  j  j d |  n  | | | <qZ Wx |  j D] } | j r| j j d d  } n t	 j
 j | j  } d  } | j d k rt |  j  d k r|  j d } qn	 |  j } | | | <qeW|  j j |  t  |  j d  r|  j j! ri  } x3 |  j j! D]% } | j" d  \ }	 } | | |	 <q6Wd	 |  j k r|  j d	 j |  q| |  j d	 <n  y |  j#   }
 |  j$ |
  Wn t% k
 r} | GHt j& d  n |  j' j( k
 r} d
 | j) | j* f GHt j& d  nR t	 j+ j, j- k
 r@} d GHt j& d  n% t. k
 rd} | GHt j& d  n Xd  S(   NRr   R,   RS   s   Unable to read file: %si   i    Rn   t   =R*   s   Error(%s): %ss   Unable to find credentials.(/   RV   R   t
   parse_argsRW   RX   R   Rw   Rz   R{   R@   RA   R|   R.   R0   R1   R   R	   R   t   ost   patht
   expandusert
   expandvarst   isfilet   opent   closeR   Rx   RG   R   R   RU   Rt   R   Rn   t   splitt   maint   cli_formatterR#   R   R`   R   t
   error_codet   error_messaget   robotot   awsqueryservicet   NoCredentialsErrort	   Exception(   R   R   R   t   p_nameR   R   t   fpt   argRn   R.   t   responset   et   err(    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   do_cli  sn    				c         C   sN  | d d k r x7| d D] } d | k r | d | k rN | | d } n  | d |  j  k r | d } | d d k r | d d !} n  | j   } q n  |  j | | |  q Wn | d d k rJx | D]u } t | | |  } t | t  rxA | D] } | j | |  q Wn t | t  r9| j |  n  | j   q Wn  d  S(	   NR   R   R   R.   iR&   i    R   (	   R[   t   uppert   _generic_cli_formatterR   t
   isinstancet   dictR   t
   basestringR!   (   R   R   R   R   R   t   itemR   t
   field_name(    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR     s(    
c         C   s    | r |  j  |  j |  n  d S(   s  
        This method is responsible for formatting the output for the
        command line interface.  The default behavior is to call the
        generic CLI formatter which attempts to print something
        reasonable.  If you want specific formatting, you should
        override this method and do your own thing.

        :type data: dict
        :param data: The data returned by AWS.
        N(   R   R   (   R   R   (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyR     s    N(   R   R"   RG   R`   R   Rw   Rx   Rj   R   R   RF   R.   R   R_   Ra   t   propertyRc   Re   Rh   Rp   R   R   R   R   R   R   R   R   R   R   (    (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyRJ      s@   

					3						?(   R   R   R@   R   Ru   t   boto.exceptiont   boto.roboto.awsqueryserviceR   R   R    R
   t   ImportErrort   pdbR   R   R   t	   exceptiont   BotoClientErrorR#   R'   R)   R+   RJ   (    (    (    s:   lib/python2.7/site-packages/boto/roboto/awsqueryrequest.pyt   <module>   s&   	>