nodes: 0, module; 1, function_definition; 2, function_name:find; 3, parameters; 4, block; 5, identifier:self; 6, list_splat_pattern; 7, dictionary_splat_pattern; 8, expression_statement; 9, expression_statement; 10, expression_statement; 11, return_statement; 12, identifier:args; 13, identifier:kwargs; 14, comment:"""Find and return the files collection documents that match ``filter``.
  
          Returns a cursor that iterates across files matching
          arbitrary queries on the files collection. Can be combined
          with other modifiers for additional control.
  
          For example::
  
            cursor = bucket.find({"filename": "lisa.txt"}, no_cursor_timeout=True)
            while (yield cursor.fetch_next):
                grid_out = cursor.next_object()
                data = yield grid_out.read()
  
          This iterates through all versions of "lisa.txt" stored in GridFS.
          Note that setting no_cursor_timeout to True may be important to
          prevent the cursor from timing out during long multi-file processing
          work.
  
          As another example, the call::
  
            most_recent_three = fs.find().sort("uploadDate", -1).limit(3)
  
          would return a cursor to the three most recently uploaded files
          in GridFS.
  
          Follows a similar interface to
          :meth:`~motor.MotorCollection.find`
          in :class:`~motor.MotorCollection`.
  
          :Parameters:
            - `filter`: Search query.
            - `batch_size` (optional): The number of documents to return per
              batch.
            - `limit` (optional): The maximum number of documents to return.
            - `no_cursor_timeout` (optional): The server normally times out idle
              cursors after an inactivity period (10 minutes) to prevent excess
              memory use. Set this option to True prevent that.
            - `skip` (optional): The number of documents to skip before
              returning.
            - `sort` (optional): The order by which to sort results. Defaults to
              None.
            - `session` (optional): a
              :class:`~pymongo.client_session.ClientSession`, created with
              :meth:`~MotorClient.start_session`.
  
          If a :class:`~pymongo.client_session.ClientSession` is passed to
          :meth:`find`, all returned :class:`MotorGridOut` instances
          are associated with that session.
  
          .. versionchanged:: 1.2
             Added session parameter.
          """; 15, assignment; 16, assignment; 17, call; 18, identifier:cursor; 19, call; 20, identifier:grid_out_cursor; 21, call; 22, identifier:grid_out_cursor; 23, argument_list; 24, attribute; 25, argument_list; 26, identifier:create_class_with_framework; 27, argument_list; 28, identifier:cursor; 29, attribute; 30, attribute; 31, identifier:find; 32, list_splat; 33, dictionary_splat; 34, identifier:AgnosticGridOutCursor; 35, attribute; 36, attribute; 37, identifier:self; 38, identifier:collection; 39, identifier:self; 40, identifier:delegate; 41, identifier:args; 42, identifier:kwargs; 43, identifier:self; 44, identifier:_framework; 45, identifier:self; 46, identifier:__module__
code: def find(self, *args, **kwargs):
          """Find and return the files collection documents that match ``filter``.
  
          Returns a cursor that iterates across files matching
          arbitrary queries on the files collection. Can be combined
          with other modifiers for additional control.
  
          For example::
  
            cursor = bucket.find({"filename": "lisa.txt"}, no_cursor_timeout=True)
            while (yield cursor.fetch_next):
                grid_out = cursor.next_object()
                data = yield grid_out.read()
  
          This iterates through all versions of "lisa.txt" stored in GridFS.
          Note that setting no_cursor_timeout to True may be important to
          prevent the cursor from timing out during long multi-file processing
          work.
  
          As another example, the call::
  
            most_recent_three = fs.find().sort("uploadDate", -1).limit(3)
  
          would return a cursor to the three most recently uploaded files
          in GridFS.
  
          Follows a similar interface to
          :meth:`~motor.MotorCollection.find`
          in :class:`~motor.MotorCollection`.
  
          :Parameters:
            - `filter`: Search query.
            - `batch_size` (optional): The number of documents to return per
              batch.
            - `limit` (optional): The maximum number of documents to return.
            - `no_cursor_timeout` (optional): The server normally times out idle
              cursors after an inactivity period (10 minutes) to prevent excess
              memory use. Set this option to True prevent that.
            - `skip` (optional): The number of documents to skip before
              returning.
            - `sort` (optional): The order by which to sort results. Defaults to
              None.
            - `session` (optional): a
              :class:`~pymongo.client_session.ClientSession`, created with
              :meth:`~MotorClient.start_session`.
  
          If a :class:`~pymongo.client_session.ClientSession` is passed to
          :meth:`find`, all returned :class:`MotorGridOut` instances
          are associated with that session.
  
          .. versionchanged:: 1.2
             Added session parameter.
          """
          cursor = self.delegate.find(*args, **kwargs)
          grid_out_cursor = create_class_with_framework(
              AgnosticGridOutCursor, self._framework, self.__module__)
  
          return grid_out_cursor(cursor, self.collection)