Submit
Path:
~
/
/
proc
/
thread-self
/
root
/
usr
/
lib
/
python2.7
/
site-packages
/
boto
/
dynamodb2
/
File Content:
results.pyc
� ��Wc @ s0 d e f d � � YZ d e f d � � YZ d S( t ResultSetc B s\ e Z d Z d d � Z e d � � Z d � Z d � Z d � Z e Z d � Z d � Z RS( s� A class used to lazily handle page-to-page navigation through a set of results. It presents a transparent iterator interface, so that all the user has to do is use it in a typical ``for`` loop (or list comprehension, etc.) to fetch results, even if they weren't present in the current page of results. This is used by the ``Table.query`` & ``Table.scan`` methods. Example:: >>> users = Table('users') >>> results = ResultSet() >>> results.to_call(users.query, username__gte='johndoe') # Now iterate. When it runs out of results, it'll fetch the next page. >>> for res in results: ... print res['username'] c C sq t t | � j � d | _ g | _ i | _ g | _ d | _ t | _ d | _ d | _ | | _ d | _ d S( Ni����i ( t superR t __init__t Nonet the_callablet call_argst call_kwargst _resultst _offsett Truet _results_leftt _last_key_seent _fetchest _max_page_sizet _limit( t selft max_page_size( ( s: /usr/lib/python2.7/site-packages/boto/dynamodb2/results.pyR s c C s d S( Nt exclusive_start_key( ( R ( ( s: /usr/lib/python2.7/site-packages/boto/dynamodb2/results.pyt first_key$ s c C s g | _ d | _ d S( s� Resets the internal state of the ``ResultSet``. This prevents results from being cached long-term & consuming excess memory. Largely internal. i N( R R ( R ( ( s: /usr/lib/python2.7/site-packages/boto/dynamodb2/results.pyt _reset( s c C s | S( N( ( R ( ( s: /usr/lib/python2.7/site-packages/boto/dynamodb2/results.pyt __iter__4 s c C s� | j d 7_ | j t | j � k ry | j t k rB t � � n | j � x* t | j � ru | j ru | j � qO Wn | j t | j � k r� | j d k r� | j d 8_ | j d k r� t � � q� n | j | j St � � d S( Ni i ( R t lenR R t Falset StopIterationt fetch_moreR R ( R ( ( s: /usr/lib/python2.7/site-packages/boto/dynamodb2/results.pyt __next__7 s c O sy t | � s t d � � n | j d d � | _ | j d k rZ | j d k rZ d | _ n | | _ | | _ | | _ d S( s� Sets up the callable & any arguments to run it with. This is stored for subsequent calls so that those queries can be run without requiring user intervention. Example:: # Just an example callable. >>> def squares_to(y): ... for x in range(1, y): ... yield x**2 >>> rs = ResultSet() # Set up what to call & arguments. >>> rs.to_call(squares_to, y=3) s3 You must supply an object or function to be called.t limiti N( t callablet ValueErrort popR R R R R ( R R t argst kwargs( ( s: /usr/lib/python2.7/site-packages/boto/dynamodb2/results.pyt to_callS s c C s� | j � | j } | j j � } | j d k rE | j | | j <n | j rx | j rx | j | j k rx | j | _ n | j d k r� | j | d <n | j d k r� | j | d <n | j | | � } | j d 7_ | j d g � } | j d d � | _ t | � r!| j j | d � n | j d k rw| j d k rw| j } | t | d � 8} | d k rwt | _ qwn | j d k r�t | _ n d S( s� When the iterator runs out of results, this method is run to re-execute the callable (& arguments) to fetch the next page. Largely internal. R i t resultst last_keyi N( R R R t copyR R R R R R R t getR R t extendR R ( R R R R! t new_resultsR ( ( s: /usr/lib/python2.7/site-packages/boto/dynamodb2/results.pyR v s0 $ N( t __name__t __module__t __doc__R R t propertyR R R R t nextR R ( ( ( s: /usr/lib/python2.7/site-packages/boto/dynamodb2/results.pyR s #t BatchGetResultSetc B s e Z d � Z d � Z RS( c O sG | j d g � | _ | j d d � | _ t t | � j | | � d S( Nt keyst max_batch_getid ( R t _keys_leftt _max_batch_getR R, R ( R R R ( ( s: /usr/lib/python2.7/site-packages/boto/dynamodb2/results.pyR � s c C s@ | j � | j } | j j � } | j | j | d <| j | j | _ t | j � d k rk t | _ n | j | | � } t | j d g � � s� d S| j j | d � x9 t | j d g � � D] \ } } | j j | | � q� Wt | j � d k r t | _ n | j j d � r<| j d c t | d � 8<n d S( NR- i R! t unprocessed_keysR ( R R R R# R/ R0 R R R R R$ R R% t enumeratet insertR ( R R R R! t offsett key_data( ( s: /usr/lib/python2.7/site-packages/boto/dynamodb2/results.pyR � s"